結果
| 問題 |
No.2857 Div Array
|
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2024-08-27 21:38:58 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 341 ms / 2,000 ms |
| コード長 | 950 bytes |
| コンパイル時間 | 469 ms |
| コンパイル使用メモリ | 82,320 KB |
| 実行使用メモリ | 77,784 KB |
| 最終ジャッジ日時 | 2024-08-27 21:39:05 |
| 合計ジャッジ時間 | 5,232 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
N, M, K = map(int, input().split())
def compress(A):
S = sorted(set(A))
D = dict()
for i in range(len(S)):
D[S[i]] = i
return S, D
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] for k in range(len(b)))%MOD
return ans
if N == 1:
exit(print(M))
N -= 1
MOD = 998244353
A = []
for i in range(1, M+1):
A.append(M//i)
S, idx = compress(A)
L = len(S)
ansM = [[0] for _ in range(L)]
for i in range(1, M+1):
ansM[idx[M//i]][0] += 1
A = [[0]*L for _ in range(L)]
for i in range(L):
for j in range(L):
if abs(S[i]-S[j]) <= K:
A[i][j] = ansM[i][0]
A = [[a[:] for a in A]]
for i in range(29):
A.append(matrix(A[-1], A[-1]))
for i in range(30):
if 1<<i & N:
ansM = matrix(A[i], ansM)
ans = 0
for a in ansM:
ans += a[0]
ans %= MOD
print(ans)
detteiuu