結果
問題 |
No.3228 Very Large Fibonacci Sum
|
ユーザー |
![]() |
提出日時 | 2025-08-08 22:20:03 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 61 ms / 2,000 ms |
コード長 | 717 bytes |
コンパイル時間 | 171 ms |
コンパイル使用メモリ | 82,244 KB |
実行使用メモリ | 68,612 KB |
最終ジャッジ日時 | 2025-08-08 22:20:29 |
合計ジャッジ時間 | 2,643 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
A, B, C, D, E, N = map(int, input().split()) MOD = 10**9+7 def matrix(a, b): ans = [[0]*len(b[0]) for _ in range(len(a))] for i in range(len(a)): for j in range(len(b[0])): ans[i][j] = sum(a[i][k]*b[k][j]%MOD for k in range(len(b)))%MOD return ans if N == 0: print(A%MOD) exit() dp = [[[0]*4 for _ in range(4)]] dp[0][0][0] = C%MOD dp[0][0][1] = D%MOD dp[0][0][2] = 1 dp[0][1][0] = 1 dp[0][2][2] = 1 dp[0][3][0] = C%MOD dp[0][3][1] = D%MOD dp[0][3][2] = 1 dp[0][3][3] = 1 for _ in range(59): dp.append(matrix(dp[-1], dp[-1])) ans = [[B%MOD], [A%MOD], [E%MOD], [(A+B)%MOD]] for i in range(60): if 1<<i & (N-1): ans = matrix(dp[i], ans) print(ans[-1][0])