結果
| 問題 |
No.1073 無限すごろく
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-26 15:44:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 45 ms / 2,000 ms |
| コード長 | 881 bytes |
| コンパイル時間 | 169 ms |
| コンパイル使用メモリ | 82,912 KB |
| 実行使用メモリ | 62,644 KB |
| 最終ジャッジ日時 | 2025-03-26 15:44:18 |
| 合計ジャッジ時間 | 2,639 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
MOD = 10**9 + 7
def multiply(a, b):
res = [[0] * 6 for _ in range(6)]
for i in range(6):
for k in range(6):
if a[i][k] == 0:
continue
for j in range(6):
res[i][j] = (res[i][j] + a[i][k] * b[k][j]) % MOD
return res
def power(mat, n):
result = [[1 if i == j else 0 for j in range(6)] for i in range(6)]
while n > 0:
if n % 2 == 1:
result = multiply(result, mat)
mat = multiply(mat, mat)
n = n // 2
return result
def main():
N = int(input().strip())
inv6 = pow(6, MOD - 2, MOD)
mat = [
[inv6] * 6,
[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
]
mat_n = power(mat, N)
print(mat_n[0][0] % MOD)
if __name__ == "__main__":
main()
lam6er