Truy vấn
Xem dạng PDF
Gửi bài giải
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Intercal, Java, JS, Kotlin, Lisp, Lua, ObjC, OCaml, Output Only, Pascal, Perl, PHP, Pike, Prolog, PyPy, Python, Racket, Ruby, Rust, Scala, Scheme, Scratch, Sed, Swift, TCL, TEXT, Turing, VB, Zig
Điểm:
800 (OI)
Giới hạn thời gian:
5.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
Cho một dãy gồm ~N~ số ~a_1, a_2, ... , a_N~. Bạn cần thực hiện ~Q~ thao tác truy vấn / cập nhật sau:
- ~\texttt{1 l r v}~: Lấy một đoạn số ~[l, r]~, tăng mỗi số lên ~v~ đơn vị. Nói cách khác, với mọi ~i \in [l, r]~ gán ~a_i := a_i+v~.
- ~\texttt{2 l r}~: Tính giá trị của biểu thức ~\sum_{i=l}^{r}{f(a_i)} \mod 998244353~.
Trong đó ~f(x) = A^x \times x^B~ với ~A, B~ được cho trước.
~\texttt{Input}~
- Dòng ~1~: chứa ba số nguyên ~N, Q, A, B~.
- Dòng ~2~: chứa ~N~ số nguyên dương ~a_1, a_2, ... , a_N~.
- Dòng ~3 \rightarrow Q + 2~: mỗi dòng mô tả một thao tác cập nhật hoặc truy vấn, có dạng như đã miêu tả ở trên.
~\texttt{Output}~
- Gồm một số dòng chứa đáp án của các truy vấn loại ~2~.
~\texttt{Constraint}~
- ~N, Q \leq 10^5~.
- ~A, B \leq 20~.
- ~v \leq 10^9~.
~\texttt{Sample Input}~
5 7 1 1
5 9 10 2 1
1 2 3 8
1 1 5 7
2 3 5
1 3 5 4
1 3 5 4
1 4 5 2
2 3 4
~\texttt{Sample Output}~
42
52
~\texttt{Subtask}~
- Các test được sinh và sắp xếp theo thứ tự hoàn toàn ngầu nhiên.
Bình luận