結果

問題 No.2001 Distanced Triple
ユーザー lam6er
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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)
0