結果
問題 |
No.1783 Remix Sum
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:27:40 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,969 bytes |
コンパイル時間 | 260 ms |
コンパイル使用メモリ | 82,108 KB |
実行使用メモリ | 844,248 KB |
最終ジャッジ日時 | 2025-06-12 20:28:00 |
合計ジャッジ時間 | 3,234 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | MLE * 1 -- * 75 |
ソースコード
import sys MOD = 120586241 def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]); idx +=1 K = int(data[idx]); idx +=1 M = int(data[idx]); idx +=1 T = int(data[idx]); idx +=1 a = list(map(int, data[idx:idx+N])) a = [x % (10**K) for x in a] size = 10**K trans = [[0]*size for _ in range(size)] for num in a: s = [0]*K for i in range(K): s[i] = (num // (10**i)) % 10 for x in range(size): allowed = True for i in range(T): xi = (x // (10**i)) % 10 yi = s[i] if xi + yi >= 10: allowed = False break if not allowed: continue z = 0 for i in range(K): xi = (x // (10**i)) % 10 yi = s[i] if i < T: zi = xi + yi else: zi = (xi + yi) % 10 z += zi * (10**i) trans[x][z] += 1 def mat_mult(A, B): res = [[0]*size for _ in range(size)] for i in range(size): for k in range(size): if A[i][k] == 0: continue for j in range(size): res[i][j] = (res[i][j] + A[i][k] * B[k][j]) % MOD return res def mat_pow(mat, power): result = [[0]*size for _ in range(size)] for i in range(size): result[i][i] = 1 while power > 0: if power % 2 == 1: result = mat_mult(result, mat) mat = mat_mult(mat, mat) power //= 2 return result mat = [row[:] for row in trans] mat = mat_pow(mat, M) for i in range(size): print(mat[0][i] % MOD) if __name__ == "__main__": main()