Truy vấn

Xem dạng PDF

Gửi bài giải

Điểm: 800 (OI)
Giới hạn thời gian: 25.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài

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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.