結果

問題 No.2452 Incline
コンテスト
ユーザー detteiuu
提出日時 2024-12-22 08:22:30
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 313 ms / 2,000 ms
コード長 667 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,362 ms
コンパイル使用メモリ 84,864 KB
実行使用メモリ 82,712 KB
最終ジャッジ日時 2026-05-28 16:22:17
合計ジャッジ時間 5,446 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

# https://atcoder.jp/contests/practice2/submissions/58141876
def floor_sum(n: int, m: int, a: int, b: int) -> int:
    res = 0
    while 1:
        if a >= m or a < 0:
            res += n * (n - 1) * (a // m) // 2
            a %= m
        if b >= m or b < 0:
            res += n * (b // m)
            b %= m
        y_max = a * n + b
        if y_max < m:
            break
        n, b = divmod(y_max, m)
        a, m = m, a
    return res

MOD = 998244353

T = int(input())
for _ in range(T):
    N, M, L, R = map(int, input().split())
    bottom = floor_sum(R-L+1, N-1, 1, L)%MOD
    top = floor_sum(R-L+1, N-1, 1, M-R)%MOD
    print((bottom+top+(R-L+1))%MOD)
0