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:

  1. REPLACE l r — for every replace a__i with D(a__i);
  2. SUM l r — calculate .

Print the answer for each SUM query.

令 D(x)D(x) 表示正整数 xx 的正因数个数。例如,D(2)=2D(2) = 2(2 能被 1 和 2 整除),D(6)=4D(6) = 4(6 能被 1、2、3 和 6 整除)。

给定一个包含 nn 个整数的数组 aa。你需要处理两类查询:

  1. REPLACE l r — 对每个 i∈[l,r]i \in [l, r],将 aia_i 替换为 D(ai)D(a_i);
  2. SUM l r — 计算 ∑i=lrai\sum\limits_{i=l}^{r} a_i。

对每个 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.

第一行包含两个整数 nn 和 mm(1≤n,m≤3⋅1051 \leq n, m \leq 3 \cdot 10^5),分别表示数组的元素个数以及需要处理的查询个数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1061 \leq a_i \leq 10^6),表示数组的元素。

接下来是 mm 行,每行包含三个整数 ti,li,rit_i, l_i, r_i,表示第 ii 个查询。若 ti=1t_i = 1,则第 ii 个查询为 REPLACE lil_i rir_i;否则为 SUM lil_i rir_i(1≤ti≤21 \leq t_i \leq 2,1≤li≤ri≤n1 \leq l_i \leq r_i \leq 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测评打分。不知道怎么写?

首页