ALDS1 10A フィボナッチ数列

この記事で使うアルゴリズム

動的計画法

はじめに

カテゴリー競プロ初中級者100問では、Qiitaにて@e869120さんがレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】としてまとめられている100問をPythonで解いています。

全問題の一覧はこちらです

問題

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_10_A&lang=ja

この問題は動的計画法を用いて解くことができます。

コード

動的計画法と言っても構える必要はありません。漸化式もシンプルでとても基本的な動的計画法と言えるでしょう。

クエリに関係なく最大サイズのフィボナッチ数列を用意しておき、クエリに応じて数列を参照する実装としました。

1
2
3
4
5
6
7
N = 45
dp = [0] * N
dp[0] = dp[1] = 1
for i in range(N-2):
dp[i+2] = dp[i] + dp[i+1]
n = int(input())
print (dp[n])

記事情報

  • 投稿日:2020年5月11日
  • 最終更新日:2020年5月12日