結果
問題 | No.1546 [Cherry 2nd Tune D] 思ったよりも易しくない |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
MOD = 998244353def main():import sysinput = sys.stdin.readdata = input().split()N = int(data[0])entries = []index = 1Ts = []Vs = []for _ in range(N):T = int(data[index])V = int(data[index + 1]) % MODTs.append(T)Vs.append(V)index += 2# Compute M and mod valuesM = sum(Ts)M_mod = M % MODM_plus_1_mod = (M + 1) % MOD# Precompute inversesinv2 = pow(2, MOD - 2, MOD)inv6 = pow(6, MOD - 2, MOD)inv4 = pow(4, MOD - 2, MOD)ans = 0current_cum = 0for i in range(N):T_i = Ts[i]V_i = Vs[i]s = current_cum + 1e = current_cum + T_ia = sb = e# Compute sum_k from a to ba1 = (a - 1) % MODterm1_b = (b % MOD) * ((b + 1) % MOD) % MODterm1 = term1_b * inv2 % MODterm2_a = a1 * (a % MOD) % MODterm2 = term2_a * inv2 % MODsumk = (term1 - term2) % MOD# Compute sum_k^2 from a to bterm1_b_k2 = ((b % MOD) * ((b + 1) % MOD) % MOD) * ((2 * b + 1) % MOD) % MODterm1_k2 = term1_b_k2 * inv6 % MODa_minus_1 = a - 1a_minus_1_mod = a_minus_1 % MODa_mod = a % MODtwo_a_minus_1_plus_1 = (2 * a_minus_1 + 1) % MODterm2_a_k2 = (a_minus_1_mod * a_mod % MOD) * two_a_minus_1_plus_1 % MODterm2_k2 = term2_a_k2 * inv6 % MODsumk2 = (term1_k2 - term2_k2) % MOD# Compute sum_k^3 from a to bb_sq = pow(b, 2, MOD)b_plus_1_sq = pow(b + 1, 2, MOD)term1_k3 = (b_sq * b_plus_1_sq) % MODterm1_k3 = term1_k3 * inv4 % MODa_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) % MODterm2_k3 = term2_k3 * inv4 % MODsumk3 = (term1_k3 - term2_k3) % MOD# Calculate the termsterm_M = (M_mod * sumk2) % MODterm_M_plus_1 = (M_plus_1_mod * sumk) % MODtotal = (term_M + term_M_plus_1 - sumk3) % MOD# Apply the division by 2 (multiply by inv2)total = total * inv2 % MOD# Apply Vicontribution = (total * V_i) % MODans = (ans + contribution) % MODcurrent_cum = eprint(ans % MOD)if __name__ == "__main__":main()