Phép Toán Modulo Trên Đoạn

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: 1900 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một dãy gồm \(N\) số nguyên dương \(A_1, A_2, \dots, A_N\). Bạn cần thực hiện \(Q\) truy vấn thuộc ba loại sau:

  • 1 l r: Tính tổng các phần tử trong đoạn từ \(l\) đến \(r\), tức là \(\sum_{i=l}^r A_i\).
  • 2 l r x: Thực hiện phép toán lấy dư cho tất cả các phần tử trong đoạn từ \(l\) đến \(r\) với \(x\), tức là \(A_i = A_i \bmod x\) với mọi \(l \le i \le r\).
  • 3 k x: Gán giá trị của phần tử tại vị trí \(k\) bằng \(x\), tức là \(A_k = x\).

Đầu vào

  • Dòng đầu tiên chứa hai số nguyên \(N\)\(Q\) (\(1 \le N, Q \le 10^5\)).
  • Dòng thứ hai chứa \(N\) số nguyên dương \(A_1, A_2, \dots, A_N\) (\(1 \le A_i \le 10^9\)).
  • \(Q\) dòng tiếp theo, mỗi dòng mô tả một truy vấn theo một trong ba định dạng trên. Các giá trị \(l, r, k, x\) thỏa mãn \(1 \le l \le r \le N\), \(1 \le k \le N\), \(1 \le x \le 10^9\).

Đầu ra

  • Với mỗi truy vấn loại 1, in ra kết quả trên một dòng.

Chấm điểm

  • Subtask duy nhất (100% số điểm): Không có ràng buộc gì thêm (\(N, Q \le 10^5\), \(A_i, x \le 10^9\)).

Ví dụ

Test 1

Input
5 5
1 2 3 4 5
1 1 5
2 1 5 3
1 1 5
3 1 10
1 1 5
Output
15
6
15
Note
  • Ban đầu mảng là \([1, 2, 3, 4, 5]\). Tổng từ \(1\) đến \(5\)\(15\).
  • Sau truy vấn 2 1 5 3, mảng trở thành \([1 \bmod 3, 2 \bmod 3, 3 \bmod 3, 4 \bmod 3, 5 \bmod 3] = [1, 2, 0, 1, 2]\). Tổng là \(6\).
  • Sau truy vấn 3 1 10, mảng là \([10, 2, 0, 1, 2]\). Tổng là \(10 + 2 + 0 + 1 + 2 = 15\).

Bình luận

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

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