CF920F.SUM and REPLACE
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Let D(x) be the number of positive divisors of a positive integer x. For example, D(2) = 2 (2 is divisible by 1 and 2), D(6) = 4 (6 is divisible by 1, 2, 3 and 6).
You are given an array a of n integers. You have to process two types of queries:
- REPLACE l r — for every
replace a__i with D(a__i); - SUM l r — calculate
.
Print the answer for each SUM query.
令 D(x) 表示正整数 x 的正因数个数。例如,D(2)=2(2 能被 1 和 2 整除),D(6)=4(6 能被 1、2、3 和 6 整除)。
给定一个包含 n 个整数的数组 a。你需要处理两类查询:
REPLACE l r— 对每个 i∈[l,r],将 ai 替换为 D(ai);SUM l r— 计算 i=l∑rai。
对每个 SUM 查询,输出其结果。
输入格式
The first line contains two integers n and m (1 ≤ n, m ≤ 3·105) — the number of elements in the array and the number of queries to process, respectively.
The second line contains n integers _a_1, _a_2, ..., a__n (1 ≤ a__i ≤ 106) — the elements of the array.
Then m lines follow, each containing 3 integers t__i, l__i, r__i denoting i-th query. If t__i = 1, then i-th query is REPLACE l__i r__i, otherwise it's SUM l__i r__i (1 ≤ t__i ≤ 2, 1 ≤ l__i ≤ r__i ≤ n).
There is at least one SUM query.
第一行包含两个整数 n 和 m(1≤n,m≤3⋅105),分别表示数组的元素个数以及需要处理的查询个数。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤106),表示数组的元素。
接下来是 m 行,每行包含三个整数 ti,li,ri,表示第 i 个查询。若 ti=1,则第 i 个查询为 REPLACE li ri;否则为 SUM li ri(1≤ti≤2,1≤li≤ri≤n)。
至少存在一个 SUM 查询。
输出格式
For each SUM query print the answer to it.
对于每个 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
输入解题思路,AI测评打分。不知道怎么写?