SUM và REPLACE

Đề bài

Mô tả

Với số nguyên dương x, gọi D(x) là số ước dương của x. Ví dụ D(2)=2 (các ước là 1,2), D(6)=4 (các ước là 1,2,3,6).

Cho một dãy a gồm n số nguyên dương. Bạn phải xử lý m truy vấn thuộc một trong hai loại sau:

  1. REPLACE l r — với mọi ilir, thay ai bằng D(ai).
  2. SUM l r — tính i=lrai.

Với mỗi truy vấn loại 2, hãy in ra kết quả.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số phần tử của dãy và số truy vấn.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.
  • m dòng tiếp theo, mỗi dòng chứa ba số nguyên ti,li,ri. Nếu ti=1 thì đây là truy vấn REPLACE li ri; nếu ti=2 thì đây là truy vấn SUM li ri.

Đảm bảo có ít nhất một truy vấn loại 2.

Dữ liệu ra

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

Ràng buộc

  • 1n,m3·105
  • 1ai106
  • 1ti2
  • 1lirin

Ví dụ

Input Output Giải thích
7 6
6 4 1 10 3 2 4
2 1 7
2 4 5
1 3 5
2 4 4
1 5 7
2 1 7
30
13
4
22
Truy vấn 1: tổng cả dãy =6+4+1+10+3+2+4=30. Truy vấn 2: tổng a4+a5=10+3=13. Truy vấn 3: thay các phần tử ở vị trí 3,4,5: a3=D(1)=1, a4=D(10)=4, a5=D(3)=2. Dãy trở thành 6,4,1,4,2,2,4. Truy vấn 4: a4=4. Truy vấn 5: thay các phần tử ở vị trí 5,6,7: D(2)=2,D(2)=2,D(4)=3. Dãy: 6,4,1,4,2,2,3. Truy vấn 6: tổng =6+4+1+4+2+2+3=22.
4 2
1 1 3 1
1 1 4
2 1 4
5 Sau REPLACE, dãy thành 1,1,2,1; tổng =5.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0