-1

我正在尝试解决Project Euler 的第 413 个问题,并且我认为 euler 试图欺骗我。老实说,这个问题似乎并不复杂,至少如果有人使用蛮力的话。

但是,虽然我的 F 函数在参数为 '10' 时返回正确的 '9',但当 N=10^3 时它返回413 ......看在上帝的份上,这是问题的索引。

还有其他人面临同样的问题吗?对于 F(10^3)​​,也许是相同的数字?我不寻求数值解。

谢谢!

4

2 回答 2

4

是时候使用蛮力解决问题了(或者为什么你的方法不起作用):

每个数字使用 10 次操作需要 10^19 * 10 = 10^20 次操作。

如果您有 3Ghz proc 和 10 个内核,并且每个内核可以执行一项操作,则您需要

10^20/(3*10^9 * 10) 秒求解。

也就是大约 100 年。

我可以确认测试用例正确

于 2013-02-08T06:15:42.417 回答
0

当我的 isOneChild(n) 函数递归删除数字并在每个级别检查时,我得到了 413。我得到了正确的答案,389。当我将它更改为索引到每个子字符串时。

当有前导 0 时,您的解决方案不会正确分支。例如,“00”应该分支到“0”和“0”,产生计数 2,但您的解决方案只转到“0”,产生计数 1。同样,“01”只分支到“1” ,错误地产生计数 0。

最小修复:除了值之外还跟踪一个字符串。

于 2013-02-08T06:44:31.800 回答