1003号:フィボナッチ関数


import sys
input = sys.stdin.readline

t = int(input())
zero = [1,0,1,1]
one = [0,1,1,2]

for i in range(4,50):
  Z = zero[i-1] + zero[i-2]
  O = one[i-1] + one[i-2]
  zero.append(Z)
  one.append(O)

for i in range(t):
  n = int(input())
  print(zero[n],one[n])
この問題はフィボナッチ数を求めるだけでなく,N番目のフィボナッチ数が発生するまで0と1の出力量がどれだけあるかを知る.
したがって、zero,oneというリストを作成し、iの最初のフィボナッチ数にどれだけ出力するかをiの最初のインデックスに0と1を格納します.
まずindex 0から3をリストに入れ、for文を使用して範囲4から50のi次フィボナッチ数の0と1出力値をリストに格納します.
(Nは40の自然数以下であるため、範囲はrange(4,41)とすることができる.)
そしてテストボックスのように出力します.
n = int(input())

P = [0,1,1]

for i in range(1,n+1):
  p = P[1]+P[2]

  P.append(p)
  P.remove(P[0])

print(P[0])
これはn回のフィボナッチ数を求めるコードです.
(これが必要な人のためかも…)