让我们称S为(无限)字符串 这是通过连接 连续正整数 (从1开始)写在基地 10。
因此,S = 1234567891011121314151617181920212223242 ...
很容易看出任何数字都会 在无数次出现 S.
让我们将f(n)称为起始位置 S中第n次出现的n 例如,f(1)= 1,f(5)= 81,f(12)= 271 和f(7780)= 111111365。
求和[f(3 ^ k)] 1< = k< = 13。
我该如何解决这个问题?
答案 0 :(得分:1)
将S计算为任意大小非常简单,但正如您可能已经发现的那样,不实用,它只会变得太大。
对于较新的项目欧拉问题而言,蛮力根本不起作用。
那就是说,你仍然可以看一下S的小值k,也许可以构造一个公式来解决部分问题(前几个值很容易在内存中处理)。另外,请看问题40
注意:记住一分钟规则。 (大多数问题可以在几毫秒内解决)
答案 1 :(得分:0)
我对运行时间的估计是O(n 2 log n),所以这种蛮力方法是不可行的。
请注意,您应该自己解决Project Euler问题,IMHO尤其适用于较新的问题。