解决Project Euler#305

时间:2010-10-14 16:30:24

标签: language-agnostic

Problem # 305

  

让我们称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。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

将S计算为任意大小非常简单,但正如您可能已经发现的那样,不实用,它只会变得太大。

对于较新的项目欧拉问题而言,蛮力根本不起作用。

那就是说,你仍然可以看一下S的小值k,也许可以构造一个公式来解决部分问题(前几个值很容易在内存中处理)。另外,请看问题40

注意:记住一分钟规则。 (大多数问题可以在几毫秒内解决)

答案 1 :(得分:0)

我对运行时间的估计是O(n 2 log n),所以这种蛮力方法是不可行的。

请注意,您应该自己解决Project Euler问题,IMHO尤其适用于较新的问题。