結果
問題 |
No.1891 Static Xor Range Composite Query
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:56:32 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,487 bytes |
コンパイル時間 | 234 ms |
コンパイル使用メモリ | 82,072 KB |
実行使用メモリ | 115,196 KB |
最終ジャッジ日時 | 2025-06-12 21:00:11 |
合計ジャッジ時間 | 9,254 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 20 TLE * 1 -- * 9 |
ソースコード
import sys MOD = 998244353 def main(): import sys sys.setrecursionlimit(1 << 25) N, Q = map(int, sys.stdin.readline().split()) a = [] b = [] for _ in range(N): ai, bi = map(int, sys.stdin.readline().split()) a.append(ai % MOD) b.append(bi % MOD) logn = (N-1).bit_length() size = 1 << logn tree = [(1, 0) for _ in range(2 * size)] for i in range(size): tree[size + i] = (a[i], b[i]) for i in range(size-1, 0, -1): a1, b1 = tree[2*i] a2, b2 = tree[2*i+1] tree[i] = ((a1 * a2) % MOD, (a1 * b2 + b1) % MOD) def query(l, r): res_a = 1 res_b = 0 l += size r += size while l < r: if l % 2 == 1: a_t, b_t = tree[l] res_a = (res_a * a_t) % MOD res_b = (res_a * b_t + res_b) % MOD l += 1 if r % 2 == 1: r -= 1 a_t, b_t = tree[r] res_a = (res_a * a_t) % MOD res_b = (res_a * b_t + res_b) % MOD l //= 2 r //= 2 return (res_a, res_b) for _ in range(Q): l, r, p, x = map(int, sys.stdin.readline().split()) current_x = x % MOD for i in range(l, r): idx = i ^ p a_i = a[idx] b_i = b[idx] current_x = (a_i * current_x + b_i) % MOD print(current_x) if __name__ == "__main__": main()