結果

問題 No.2452 Incline
コンテスト
ユーザー LyricalMaestro
提出日時 2026-09-27 19:49:04
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 190 ms / 2,000 ms
+ 480µs
コード長 1,347 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 75 ms
コンパイル使用メモリ 80,896 KB
実行使用メモリ 88,716 KB
最終ジャッジ日時 2026-09-27 19:49:10
合計ジャッジ時間 3,190 ms
ジャッジサーバーID
(参考情報)
judge4_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

## https://yukicoder.me/problems/no/2452

MOD = 998244353

def solve2(N, M, R):
    # l / (N - 1) を計算
    q = R // (N - 1)
    ans = ((q - 1) * q) // 2
    ans *= (N - 1)
    ans += q * (R - (q * (N - 1) - 1))
    ans %= MOD

    # (l - M) / N - 1を計算
    q = M // (N - 1)
    ans2 = ((q - 1) * q) // 2
    ans2 *= (N - 1)
    ans2 += q * (M - (q * (N - 1) - 1))
    ans2 %= MOD
    ans2 *= -1
    ans2 %= MOD

    if M <= R:
        q = (R - M) // (N - 1)
        ans3 = ((q - 1) * q) // 2
        ans3 *= (N - 1)
        ans3 += q * ((R - M) - (q * (N - 1) - 1))
        ans3 %= MOD
        ans2 += ans3
        ans2 %= MOD
    else:
        q = (M - R - 1) // (N - 1)
        ans3 = ((q - 1) * q) // 2
        ans3 *= (N - 1)
        ans3 += q * (((M - R - 1)) - (q * (N - 1) - 1))
        ans3 %= MOD
        ans2 += ans3
        ans2 %= MOD

    answer = (ans - ans2) % MOD
    answer += (R + 1)
    answer %= MOD
    return answer


def solve(N, M, L, R):
    ans = solve2(N, M, R)
    if L > 0:
        ans -= solve2(N, M, L -1)
        ans %= MOD
    return ans



def main():
    T = int(input())
    answers = []
    for _ in range(T):
        N, M, L, R = map(int, input().split())
        ans = solve(N, M, L, R)
        answers.append(ans)

    for ans in answers:
        print(ans)


if __name__ == '__main__':
    main()
0