結果
| 問題 | No.2834 Work to Play |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-08-02 23:17:09 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,199 bytes |
| コンパイル時間 | 262 ms |
| コンパイル使用メモリ | 82,444 KB |
| 実行使用メモリ | 78,696 KB |
| 最終ジャッジ日時 | 2024-08-02 23:17:18 |
| 合計ジャッジ時間 | 8,518 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 47 WA * 42 |
ソースコード
MOD = 998244353
n, a, k = map(int, input().split())
ans = 0
for i in range(1, k + 1):
m = (n - i) // k + 1
c = (a * i) // k
m -= 1
ans += a * k * m * (m + 1) * (2 * m + 1) // 6
ans += (c * k + i * a) * m * (m + 1) // 2
ans += c * i * (m + 1)
ans %= MOD
aa = a
if n > 2 * k:
add = n % (2 * k)
d = n // (2 * k)
A = [a * i % k for i in range(add + 1, 2 * k + add + 1)]
assert sum(A) % k == 0
tot = 0
for i in range(2 * k - 1, -1, -1):
a = A[i]
if tot != 0:
c = min(a, k - tot)
a -= c
tot += c
if tot == k:
tot = 0
else:
continue
c = (a + k - 1) // k
s = add + i
t = s + (d - 1) * 2 * k
ans += d * (s + t + 2) // 2 * c
tot = a % k
ans %= MOD
n %= 2 * k
A = [aa * i % k for i in range(1, n + 1)]
tot = 0
for i in range(n, 0, -1):
a = A[i - 1]
if tot != 0:
c = min(a, k - tot)
a -= c
tot += c
if tot == k:
tot = 0
else:
continue
ans += (a + k - 1) // k * i
tot = a % k
ans %= MOD
ans *= 2
print(ans)