trang chủ / đề bài / dhbb23_ctp_11_a

Tổng và XOR trên đoạn

Đề bài

Mô tả

Cho mảng a gồm n số tự nhiên a1,a2,…,an. Có hai loại thao tác:

  • Tính tổng các phần tử trong đoạn [l,r];
  • Áp dụng phép toán XOR với x cho trước cho từng phần tử trong đoạn [l,r], tức là thay mỗi ai với l≤i≤r bằng ai⊕x.

Cho danh sách m thao tác thuộc hai loại trên.

Yêu cầu: Hãy thực hiện lần lượt tất cả các thao tác đã cho, đối với mỗi thao tác tính tổng, in ra kết quả nhận được.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên dương n;
  • Dòng thứ hai chứa n số tự nhiên a1,a2,…,an;
  • Dòng thứ ba chứa số nguyên dương m là số thao tác;
  • m dòng tiếp theo mô tả m thao tác theo định dạng:
    • 1 l r: tính tổng các phần tử trong đoạn [l,r];
    • 2 l r x: áp dụng phép toán XOR với x cho tất cả các phần tử trong đoạn [l,r].

Dữ liệu ra

Với mỗi thao tác loại 1, theo thứ tự xuất hiện, ghi tổng thu được trên một dòng. Dữ liệu vào có ít nhất một thao tác loại 1.

Ràng buộc

  • 1≤n≤105, 1≤m≤5·104.
  • 0≤ai≤106, 0≤x≤106.
  • 1≤l≤r≤n trong mọi thao tác.
  • Sau các thao tác XOR, giá trị các phần tử có thể vượt quá 106 (nhưng luôn nhỏ hơn 220).

Subtasks

  • Subtask 1 (60% số điểm): n,m≤103.
  • Subtask 2 (40% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5
4 10 3 13 7
8
1 2 4
2 1 3 3
1 2 4
1 3 3
2 2 5 5
1 1 5
2 1 2 10
1 2 3
26
22
0
34
11
Tổng ban đầu của đoạn [2,4] là 10+3+13=26. Sau thao tác 2 1 3 3 mảng là 7,9,0,13,7, tổng đoạn [2,4] là 22, phần tử thứ 3 bằng 0. Sau 2 2 5 5 mảng là 7,12,5,8,2, tổng là 34. Sau 2 1 2 10 mảng là 13,6,5,8,2, tổng đoạn [2,3] là 11.
3
0 1000000 5
4
2 1 3 1000000
1 1 3
2 2 2 7
1 2 3
2000005
1000012
Ví dụ bổ sung. Sau thao tác đầu mảng là 1000000,0,1000005: phần tử thứ ba vượt quá 106. Sau 2 2 2 7 mảng là 1000000,7,1000005, tổng đoạn [2,3] là 1000012.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0