結果
| 問題 |
No.1891 Static Xor Range Composite Query
|
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 15:53:56 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,487 bytes |
| コンパイル時間 | 307 ms |
| コンパイル使用メモリ | 82,944 KB |
| 実行使用メモリ | 114,296 KB |
| 最終ジャッジ日時 | 2025-06-12 15:54:08 |
| 合計ジャッジ時間 | 9,982 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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()
gew1fw