-2

可能重复:
算法找到一个数字,其中 4 和 7 的乘积在给定范围内最大

F4(X)为 X 的十进制表示中的位数 4, 为 X 的十进制表示中F7(X)的位数 7。例如,

F4(456) = 1, F4(444) = 3, F7(1) = 0, F7(747) = 2. 

如何解决以下问题?

找到最大值{F4(X) ∙ F7(X) : L ≤ X ≤ R}

1 ≤ L ≤ R ≤ 10^18

解决这个问题的最快算法是什么?

1.可以通过查找 L 和 R 之间的所有数字并找到最大乘积来尝试蛮力,但这种方法很容易超时。

4

1 回答 1

2

既然是作业,我只会以问题的形式给你建议:

  • 1 到 10^18 之间的数字有多少位?
  • 一个数字可以同时是 7 和 4 吗?
于 2012-06-07T11:56:46.047 回答