ProjectEuler#25 Python为什么这样做行不通?

2024-05-02 13:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决this problem

The 12th term, F12, is the first term to contain three digits.

What is the first term in the Fibonacci sequence to contain 1000 digits?

check = True
mylst = [1,1]
i = 1
while check:
    if  len(str(mylst[i])) >= 1000:
        check = False
    else:
        mylst.append(mylst[i-1] + mylst[i-2])  
        i=i+1
a =str((mylst[len(mylst)-1]))
print(len(a))
print(a)

我似乎得到了测试用例2和3的正确答案,但我的答案没有被接受。请帮帮我,我不明白出了什么问题。在


Tags: theto答案lenischeckthisfirst
3条回答

答案是fibonacci数的索引,而不是数字本身。在

因此,如果Fn是Fibonacci序列中第一个包含1000位数字的项,则需要输入相应的n

我想你的代码有错误。如果看第一次迭代,从i=1开始,然后调用

mylst.append(mylst[i-1] + mylst[i-2])  

这将添加mylst[0] + mylst[-1]。这也给了我错误的答案(对于找到第一个3位数的索引,F12。你的代码给了我F18)。在

显然这不是你想做的。您可以通过更改正在添加在一起的列表索引来修复它。在

^{pr2}$

然后,正如其他人提到的,你需要答案的索引。在

print len(mylst)

因为问题是哪个词是第一个包含1000个数字的词,而不是哪个数字。所以,如果问题是

What is the first term in the Fibonacci sequence to contain 3 digits?

答案应该是12,而不是144。在

关于ProjectEuler的一般提示:仔细阅读问题描述。至少做三次。如果我因为误读问题文本而花在解决体育问题上的每分钟消耗一卡路里,那么我的身体可能会处于健康状态。在

相关问题 更多 >