結果
問題 |
No.3243 Multiplication 8 1
|
ユーザー |
![]() |
提出日時 | 2025-08-23 01:41:07 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 593 ms / 2,000 ms |
コード長 | 973 bytes |
コンパイル時間 | 327 ms |
コンパイル使用メモリ | 81,928 KB |
実行使用メモリ | 77,592 KB |
最終ジャッジ日時 | 2025-08-23 01:41:10 |
合計ジャッジ時間 | 2,798 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 4 |
ソースコード
mod=998244353 def mat_mul(a, b) : I, J, K = len(a), len(b[0]), len(b) c = [[0] * J for _ in range(I)] for i in range(I) : for j in range(J) : for k in range(K) : c[i][j] += a[i][k] * b[k][j] c[i][j] %= mod return c def mat_pow(x, n): y = [[0] * len(x) for _ in range(len(x))] for i in range(len(x)): y[i][i] = 1 while n > 0: if n & 1: y = mat_mul(x, y) x = mat_mul(x, x) n >>= 1 return y a=[1,-1,2,-2,4,-4,-8] """テスト st=[[2],[1]] ret=[[2,3],[1,2]] print(mat_mul(mat_pow(ret,9),st)) """ st=[[0] for _ in range(7)] st[0]=[1] ret=[[0]*7 for _ in range(7)] for i in range(7): for j in (1,-1,2,-2): if a[i]*j in a: ret[a.index(a[i]*j)][i]+=1 if a[i]*j==8: ret[0][i]+=1 t=int(input()) for _ in range(t): n=int(input()) ans=-pow(2,n-1,mod) x=mat_mul(mat_pow(ret,n),st) print((ans+x[0][0])%mod)