結果
| 問題 | No.2452 Incline |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-27 19:49:04 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 190 ms / 2,000 ms |
| + 480µs | |
| コード長 | 1,347 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
## 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()