結果
問題 |
No.2989 Fibonacci Prize
|
ユーザー |
![]() |
提出日時 | 2024-12-14 12:01:32 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 912 bytes |
コンパイル時間 | 1,189 ms |
コンパイル使用メモリ | 82,172 KB |
実行使用メモリ | 140,056 KB |
最終ジャッジ日時 | 2024-12-14 12:01:41 |
合計ジャッジ時間 | 8,455 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 WA * 37 |
ソースコード
N, M = map(int, input().split()) def solve(N, M): if N == 1: ans = M if M >= 3: ans = ((M - 2) * (M - 1)) // 2 + 3 return ans if M <= 2: return 0 fib = [0, 1] for i in range(2, 10 ** 10): fib.append((fib[-1] + fib[-2]) % N) if fib[0] == fib[-2] and fib[1] == fib[-1]: break Fib = fib[:] Fib.pop() Fib.pop() n = len(Fib) R = [0 for i in range(N)] for i in range(n - 1): Fib[i + 1] = (Fib[i + 1] + Fib[i]) % N for r in Fib: R[r] += 1 x = (M - 1) // n ans = 0 # R <= M - 2, L <= Rのとき条件満たす. for i in range(N): R[i] *= x r = R[i] ans += (r * (r - 1)) // 2 for i in range(M - 1 - x * n): r = Fib[i] ans += R[r] R[r] += 1 # fib_M = fib_(M - 1) + fib_(M - 2) if fib[M - x * n + 1] % N == 0: ans += 2 # fib_(M - 1) if fib[M - x * n] % N == 0: ans += 1 return ans print(solve(N, M))