[python/白駿/DP]193:この親水性


自分の手で
リンク:https://www.acmicpc.net/problem/2193
質問する
0と1のみからなる数をバイナリ数と呼ぶ.これらのバイナリ数にはpinarynumberと呼ばれる特殊な性質を持つものがある.この選手は以下の性質を満たしている.
この数はゼロで始まるわけではない.
この親水性では,1不連続が2回出現した.すなわち、11は部分文字列を持たない.
例えば、1、10、100、101、1000、1001等がこの親水性となる.しかし、001011または101101はそれぞれ1、2号規則に違反しているため、この親水性ではない.
n(1≦n≦90)が与えられた場合、nビット求親数値のプログラムを作成してください.
入力
1行目はNです.
しゅつりょく
1行目のNビットは親水性個数を出力する.
に答える
和1のみからなる数=バイナリ数
自分の手で
  • 0からx
  • 1は2回連続して現れません.11は部分文字列ではありません.
  • Nビット出力この親水個数
  • この泉を規則に従って解くとパターンが繰り返される.
    1.NはN-1の結果に0を加え、N-1の結果に01を加える
    2.Nの個数がN-1の結果とN-2の結果との和=>フィボナッチ数列
    3.フィボナッチ個数を求めることでN桁の個数出力を得る
    コード#コード#
    N = int(input()) 
    result = [0 for _ in range(N+1)] 
    
    for i in range(1,N+1):
        if i ==1 or i==2:
            result[i]=1
        else:
            result[i] = result[i-1]+result[i-2]
    print(result[N])