結果
問題 | No.1269 I hate Fibonacci Number |
ユーザー |
![]() |
提出日時 | 2020-10-23 23:55:01 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 176 ms / 3,000 ms |
コード長 | 1,226 bytes |
コンパイル時間 | 204 ms |
コンパイル使用メモリ | 82,568 KB |
実行使用メモリ | 77,028 KB |
最終ジャッジ日時 | 2024-07-21 13:56:04 |
合計ジャッジ時間 | 4,514 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
import sysreadline = sys.stdin.readlineN, L, R = map(int, readline().split())Fib = []a, b = 1, 1while b <= R:Fib.append(b)a, b = b, a+bL -= 1a, b = 1, 1while b <= L:Fib.remove(b)a, b = b, a+bFib = [list(map(int, str(s))) for s in Fib]S = set()S.add(tuple())banned = set()for f in Fib:for l in range(len(f)):S.add(tuple(f[:l+1]))banned.add(tuple(f))D = dict()Di = dict()for i in range(len(S)):s = S.pop()D[s] = iDi[i] = semp = D[tuple()]Edge = []for i in range(len(Di)):s = list(Di[i])E = []for num in range(10):t = tuple(s+[num])lt = len(t)for ti in range(lt+1):if t[ti:] in banned:breakelse:for ti in range(lt+1):if t[ti:] in D:E.append(D[t[ti:]])breakEdge.append(E)LD = len(D)dp = [0]*LDdp[emp] = 1MOD = 10**9+7for _ in range(N):dp2 = [0]*LDfor j in range(LD):dj = dp[j]if not dj:continuefor e in Edge[j]:dp2[e] = (dp2[e] + dj)%MODdp = dp2[:]print((sum(dp)-1)%MOD)