AtCoder ABC 079 B – Lucas Number Python解説

スポンサーリンク

Lucas Number

今、日本は 11 月 18 日ですが、11 と 18 は隣り合うリュカ数です。
整数 N が与えられるので、N 番目のリュカ数を求めてください。

ただし、リュカ数は i 番目のリュカ数をLi とすると、
L0​=2
L1=1
Li=Li−1+Li−2(i≧2)
と定義される数とします。

AtCoder Beginner Contest 079 「Lucas Number」

リュカ数。フランスの数学者エドゥアール・リュカにちなんで名付けられた数とのこと。フィボナッチ数と同じく各項が前の項により定まる漸化式なので、フィボナッチのような解き方で大丈夫かと思います。

n = int(input())

l = [0] * (n + 1)
l[0] = 2
l[1] = 1

for i in range(2, n + 1):
    l[i] = l[i - 2] + l[i - 1]
    
print(l[n])

問題文からリュカ数の0番目の値は2、1番目の値は1が与えられているので数列に格納しておきます。あとはfor文でN番目までリュカ数を求めたら完了です。