首页 > 解决方案 > 给定 2 个正整数 x,y 有 10^5 个十六进制数字。[x, y] 范围内所有整数的乘积的位数和是多少?

问题描述

给定 2 个正整数 x,y 有 10 5 个十六进制数字(x,y 可以是 FFF....F(长度为 10 5))。做改变:

  1. 计算 [x, y] 范围内所有整数的乘积。
  2. 计算总和,直到结果只有 1 位。
  3. 打印那个数字。

例如:

  1. [x, y] = {1BA, 1BB, 1BC, 1BD} 范围内的所有整数(十进制为 {442, 443, 444, 445})
  2. 所有整数的乘积为 1BA x 1BB x 1BC x 1BD = 901F21AE8(十进制为 38687349480)
  3. 对数字求和,直到结果只有 1 位:
    • 901F21AE8 → 9 + 0 + 1 + F + 2 + 1 + A + E + 8 = 3C
    • 3C → 3 + C = F
  4. 打印“F”

我尝试了蛮力方式(完全按照它所说的去做),但我超出了时间限制。有没有更好的算法?

标签: algorithm

解决方案


您可以通过使用多线程的“分而治之”算法来加快计算速度。将你的数字分成块,然后递归地将每个块中的所有数字相乘。


推荐阅读