Needle of Words

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2400 (p) Thời gian: 5.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho đa thức \(f = \sum_{i=0}^{n} a_i x^i\) trên \(\mathbb{Z}_p\), \(p = 998244353\). Định nghĩa \(s_k\) như sau:

\[s_k = k! \cdot a_k \bmod p\]

Xử lý \(q\) truy vấn online: mỗi tham số số nguyên \(v\) trong truy vấn được giải mã thành \(v \oplus\) last_ans, với last_ans khởi đầu bằng 0 và cập nhật sau mỗi truy vấn Q. Có bốn loại truy vấn:

D — Thay \(f(x) \leftarrow \dfrac{f(x) - a_0}{x}\), tức là \(a_i \leftarrow a_{i+1}\) với mọi \(i \geq 0\).

S c — Thay \(f(x) \leftarrow f(x + c')\) với \(c' = c \oplus\) last_ans.

M m \(b_0 \ldots b_{m-1}\) — Thay \(f \leftarrow f \cdot g\) với \(g = \sum_{i=0}^{m-1} b_i x^i\) (các \(b_i\) không được mã hóa).

Q t — In ra \(s_{t'}\) với \(t' = t \oplus\) last_ans. Gán last_ans \(\leftarrow s_{t'}\).

Input

  • Dòng đầu: hai số nguyên \(n\)\(q\).
  • Dòng hai: \(n+1\) số nguyên \(a_0, a_1, \ldots, a_n\).
  • \(q\) dòng tiếp theo: mỗi dòng là một truy vấn theo định dạng trên.

Ràng buộc: \(1 \leq n \leq 2^{18}\), \(1 \leq q \leq 10^5\), \(0 \leq a_i, b_i, c < p\), \(m \leq 2^{17}\).

Output

Với mỗi truy vấn Q, in một số nguyên trên một dòng.

Example

Test

Input
3 6
0 0 1 0
M 3 1 0 1
Q 0
S 1
Q 0
D
Q 0
Output
0
2
8
Note

Ban đầu \(f = x^2\).

M 3 1 0 1: \(g = 1 + x^2\), \(f \leftarrow x^2(1+x^2) = x^2 + x^4\), tức \(a = [0,0,1,0,1,0]\).

Q 0: \(t' = 0 \oplus 0 = 0\), \(s_0 = 0! \cdot 0 = 0\). In \(0\). last_ans \(= 0\).

S 1: \(c' = 1 \oplus 0 = 1\), \(f \leftarrow f(x+1) = (x+1)^2 + (x+1)^4 = 2 + 6x + 7x^2 + 4x^3 + x^4\), tức \(a = [2,6,7,4,1,0]\).

Q 0: \(t' = 0 \oplus 0 = 0\), \(s_0 = 0! \cdot 2 = 2\). In \(2\). last_ans \(= 2\).

D: \(f \leftarrow \frac{f - 2}{x}\), \(a = [6,7,4,1,0]\).

Q 0: \(t' = 0 \oplus 2 = 2\), \(s_2 = 2! \cdot 4 = 8\). In \(8\). last_ans \(= 8\).

Scoring

  • Subtask 1 : \(n, q \leq 1000\); không có truy vấn M.
  • Subtask 2 : \(n \leq 2^{18}\), \(q \leq 500\); không có truy vấn M.
  • Subtask 3 : Đủ 4 loại truy vấn; \(q \leq 200\).
  • Subtask 4 : Không có ràng buộc bổ sung.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.