結果
問題 |
No.2001 Distanced Triple
|
ユーザー |
![]() |
提出日時 | 2025-03-31 17:52:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 39 ms / 2,000 ms |
コード長 | 1,210 bytes |
コンパイル時間 | 249 ms |
コンパイル使用メモリ | 82,648 KB |
実行使用メモリ | 54,116 KB |
最終ジャッジ日時 | 2025-03-31 17:53:57 |
合計ジャッジ時間 | 2,643 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
MOD = 998244353 inv6 = pow(6, MOD - 2, MOD) inv2 = pow(2, MOD - 2, MOD) L, R = map(int, input().split()) A, B, C = map(int, input().split()) # Calculate U U1 = R - A - B U2 = R - C U = min(U1, U2) if U < L: print(0) else: if C <= A + B: # Case C <= A + B n = U1 - L + 1 # U is U1 in this case if n < 0: print(0) else: # Compute n*(n+1)*(n+2) // 6 mod MOD n_mod = n % MOD term = n_mod * (n_mod + 1) % MOD term = term * (n_mod + 2) % MOD ans = term * inv6 % MOD print(ans) else: # Case C > A + B m = U2 - L + 1 # U is U2 here if m < 0: print(0) else: # term1 = (C - B - A) * m*(m+1) // 2 cba = (C - B - A) % MOD m_mod = m % MOD term1 = cba * m_mod % MOD term1 = term1 * ((m + 1) % MOD) % MOD term1 = term1 * inv2 % MOD # term2 = m*(m+1)*(m+2) // 6 term2 = m_mod * ((m + 1) % MOD) % MOD term2 = term2 * ((m + 2) % MOD) % MOD term2 = term2 * inv6 % MOD ans = (term1 + term2) % MOD print(ans)