結果
| 問題 | No.2834 Work to Play | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2024-08-02 23:12:36 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,207 bytes | 
| コンパイル時間 | 172 ms | 
| コンパイル使用メモリ | 82,136 KB | 
| 実行使用メモリ | 78,968 KB | 
| 最終ジャッジ日時 | 2024-08-02 23:12:47 | 
| 合計ジャッジ時間 | 8,762 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 4 WA * 85 | 
ソースコード
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 + add) % 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)
            
            
            
        