trang chủ / đề bài / childseq

Dãy số của cậu bé

Đề bài

Mô tả

Cho một dãy số nguyên a1,a2,…,an. Bạn cần thực hiện m thao tác, mỗi thao tác thuộc một trong ba loại sau:

  • Loại 1 — 1 l r: In ra tổng al+al+1+⋯+ar.
  • Loại 2 — 2 l r x: Với mọi i thỏa l≤i≤r, gán ai=aimodx (phần dư khi chia ai cho x).
  • Loại 3 — 3 k x: Gán ak=x.

Hãy thực hiện toàn bộ dãy thao tác theo đúng thứ tự và in ra kết quả của mỗi thao tác loại 1.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n và m.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
  • m dòng tiếp theo, mỗi dòng mô tả một thao tác:
    • Nếu bắt đầu bằng số 1: tiếp theo là hai số nguyên l,r (1≤l≤r≤n).
    • Nếu bắt đầu bằng số 2: tiếp theo là ba số nguyên l,r,x (1≤l≤r≤n; 1≤x≤109).
    • Nếu bắt đầu bằng số 3: tiếp theo là hai số nguyên k,x (1≤k≤n; 1≤x≤109).

Dữ liệu ra

Với mỗi thao tác loại 1, in ra một dòng chứa tổng tương ứng. Lưu ý kết quả có thể vượt quá phạm vi số nguyên 32-bit.

Ràng buộc

  • 1≤n,m≤105
  • 1≤ai≤109

Ví dụ

Input Output Giải thích
5 5
1 2 3 4 5
2 3 5 4
3 3 5
1 2 5
2 1 3 3
1 1 3
8
5
Ban đầu a=[1,2,3,4,5].
Sau thao tác 2 (mod 4 trên đoạn [3,5]): a=[1,2,3,0,1].
Sau thao tác 3 (gán a3=5): a=[1,2,5,0,1].
Thao tác 1 trên [2,5]: 2+5+0+1=8.
Sau thao tác 2 (mod 3 trên đoạn [1,3]): a=[1,2,2,0,1].
Thao tác 1 trên [1,3]: 1+2+2=5.
1 1
1000000000
1 1 1
1000000000 Dãy chỉ có một phần tử; thao tác 1 in ra chính giá trị đó.

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