为什么我的Project Euler问题25回答错了?

问题描述 投票:-4回答:2

项目欧拉问题25 https://projecteuler.net/problem=25,非常简单。要解决的问题是:

Fibonacci序列中包含1000位数的第一项的索引是多少?

但我的回答是错的,我无法弄清楚为什么。

这不可能更简单,我得到了错误的答案

def fib_gen(i=1, j=1):


  yield 1

  yield 1

  while 1:

    i, j = i+j, i
    yield i

for i, f in enumerate(fib_gen()):

  if f < (10**1000):
    pass
  else:
    if f > (10**1000-1):
      print(i+1, f)
      break

我的回答是4787

正确答案4782,我想。

更新没关系。我想出10 ** 1000是1001位数

python
2个回答
0
投票

如果你使用if f > (10**(1000-1)):,你会得到4782。


0
投票

试试这个: -

def fib(limit):
    var, var1,l = 0,1,0
    for i in range(limit):
        ph = var1
        var1, var = var+var1, ph
        l = ph
    return l

counter = -1
while 1:
    counter += 1
    v = fib(counter)
    if len(str(v)) == 1000:
        print(counter)
        break
# output: 4782
© www.soinside.com 2019 - 2024. All rights reserved.