A93496.求和与替换
提高+/省选-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
设 D(x) 表示正整数 x 的正约数个数。例如,D(2)=2(2 能被 1 和 2 整除),D(6)=4(6 能被 1、2、3 和 6 整除)。
给定一个包含 n 个整数的数组 a。你需要处理两种类型的操作:
- REPLACE l r:对于每一个 l≤i≤r,将 ai 替换为 D(ai);
- SUM l r:计算 ∑i=lrai。
每次 SUM 操作需要输出结果。
输入格式
第一行包含两个整数 n 和 m(1≤n,m≤3⋅105)。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤106)。
接下来 m 行,每行包含 3 个整数 ti,li,ri:
- 若 ti=1,表示 REPLACE li ri
- 否则表示 SUM li ri
保证至少有一次 SUM 操作。
输出格式
对于每个 SUM 操作,输出一行结果。
输入输出样例
输入#1
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
输出#1
30 13 4 22
说明/提示
样例解释
- 第一次 SUM:6+4+1+10+3+2+4=30
- 第二次 SUM:10+3=13
- 执行一次 REPLACE(3,5) 后:把 a3,a4,a5 替换成它们的约数个数
- 后面同理,按操作顺序计算即可