結果

問題 No.1546 [Cherry 2nd Tune D] 思ったよりも易しくない
ユーザー lam6er
提出日時 2025-03-20 20:48:32
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 2,508 bytes
コンパイル時間 489 ms
コンパイル使用メモリ 82,668 KB
実行使用メモリ 170,220 KB
最終ジャッジ日時 2025-03-20 20:48:55
合計ジャッジ時間 9,278 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 14 TLE * 1 -- * 38
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

MOD = 998244353
def main():
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0])
entries = []
index = 1
Ts = []
Vs = []
for _ in range(N):
T = int(data[index])
V = int(data[index + 1]) % MOD
Ts.append(T)
Vs.append(V)
index += 2
# Compute M and mod values
M = sum(Ts)
M_mod = M % MOD
M_plus_1_mod = (M + 1) % MOD
# Precompute inverses
inv2 = pow(2, MOD - 2, MOD)
inv6 = pow(6, MOD - 2, MOD)
inv4 = pow(4, MOD - 2, MOD)
ans = 0
current_cum = 0
for i in range(N):
T_i = Ts[i]
V_i = Vs[i]
s = current_cum + 1
e = current_cum + T_i
a = s
b = e
# Compute sum_k from a to b
a1 = (a - 1) % MOD
term1_b = (b % MOD) * ((b + 1) % MOD) % MOD
term1 = term1_b * inv2 % MOD
term2_a = a1 * (a % MOD) % MOD
term2 = term2_a * inv2 % MOD
sumk = (term1 - term2) % MOD
# Compute sum_k^2 from a to b
term1_b_k2 = ((b % MOD) * ((b + 1) % MOD) % MOD) * ((2 * b + 1) % MOD) % MOD
term1_k2 = term1_b_k2 * inv6 % MOD
a_minus_1 = a - 1
a_minus_1_mod = a_minus_1 % MOD
a_mod = a % MOD
two_a_minus_1_plus_1 = (2 * a_minus_1 + 1) % MOD
term2_a_k2 = (a_minus_1_mod * a_mod % MOD) * two_a_minus_1_plus_1 % MOD
term2_k2 = term2_a_k2 * inv6 % MOD
sumk2 = (term1_k2 - term2_k2) % MOD
# Compute sum_k^3 from a to b
b_sq = pow(b, 2, MOD)
b_plus_1_sq = pow(b + 1, 2, MOD)
term1_k3 = (b_sq * b_plus_1_sq) % MOD
term1_k3 = term1_k3 * inv4 % MOD
a_minus_1_sq = pow(a_minus_1, 2, MOD)
a_minus_1_plus_1_sq = pow(a_minus_1 + 1, 2, MOD)
term2_k3 = (a_minus_1_sq * a_minus_1_plus_1_sq) % MOD
term2_k3 = term2_k3 * inv4 % MOD
sumk3 = (term1_k3 - term2_k3) % MOD
# Calculate the terms
term_M = (M_mod * sumk2) % MOD
term_M_plus_1 = (M_plus_1_mod * sumk) % MOD
total = (term_M + term_M_plus_1 - sumk3) % MOD
# Apply the division by 2 (multiply by inv2)
total = total * inv2 % MOD
# Apply Vi
contribution = (total * V_i) % MOD
ans = (ans + contribution) % MOD
current_cum = e
print(ans % MOD)
if __name__ == "__main__":
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0