305947: CF1114F. Please, another Queries on Array?

Memory Limit:256 MB Time Limit:5 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Please, another Queries on Array?

题意翻译

## 题目描述 你有一个数组$a_1,a_2,\dots,a_n$。 现在你需要完成$q$次操作,有以下两种操作形式: 1. `MULTIPLY l r x`,对于所有$i(l\le i\le r)$,将$a_i$乘上$x$。 2. `TOTIENT l r`,求出$\varphi(\prod_{i=l}^ra_i)$,对$10^9+7$取模后的结果。其中$\varphi$表示欧拉函数,$\varphi(n)$的定义为$1\dots n$中与$n$互质的数的个数。 ## 输入输出格式 ### 输入格式 输入的第一行有两个数$n,q$,保证$1\le n\le 4\times10^5,1\le q\le 2\times 10^5$,表示序列的长度以及询问的个数。 第二行是$n$个数$a_i$表示序列,满足$1\le a_i\le 300$。 在接下来的$q$行,每行表示一个操作,其具体意义见题目描述。 保证数据中至少有一次操作2。 ### 输出格式 对于每一个操作2输出一行,表示答案。 ## 输入输出样例 ### 输入样例#1: ```plain 4 4 5 9 1 2 TOTIENT 3 3 TOTIENT 3 4 MULTIPLY 4 4 3 TOTIENT 4 4 ``` ### 输出样例#1: ```plain 1 1 2 ``` ## 说明 在样例中: 对于第1个询问$\varphi(1)=1$; 对于第2个询问$\varphi(2)=1$; 对于第3个询问$\varphi(6)=2$。

题目描述

You are given an array $ a_1, a_2, \ldots, a_n $ . You need to perform $ q $ queries of the following two types: 1. "MULTIPLY l r x" — for every $ i $ ( $ l \le i \le r $ ) multiply $ a_i $ by $ x $ . 2. "TOTIENT l r" — print $ \varphi(\prod \limits_{i=l}^{r} a_i) $ taken modulo $ 10^9+7 $ , where $ \varphi $ denotes Euler's totient function. The [Euler's totient function](http://gg.gg/euler_totient) of a positive integer $ n $ (denoted as $ \varphi(n) $ ) is the number of integers $ x $ ( $ 1 \le x \le n $ ) such that $ \gcd(n,x) = 1 $ .

输入输出格式

输入格式


The first line contains two integers $ n $ and $ q $ ( $ 1 \le n \le 4 \cdot 10^5 $ , $ 1 \le q \le 2 \cdot 10^5 $ ) — the number of elements in array $ a $ and the number of queries. The second line contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ 1 \le a_i \le 300 $ ) — the elements of array $ a $ . Then $ q $ lines follow, describing queries in the format given in the statement. 1. "MULTIPLY l r x" ( $ 1 \le l \le r \le n $ , $ 1 \le x \le 300 $ ) — denotes a multiplication query. 2. "TOTIENT l r" ( $ 1 \le l \le r \le n $ ) — denotes a query on the value of Euler's totient function. It is guaranteed that there is at least one "TOTIENT" query.

输出格式


For each "TOTIENT" query, print the answer to it.

输入输出样例

输入样例 #1

4 4
5 9 1 2
TOTIENT 3 3
TOTIENT 3 4
MULTIPLY 4 4 3
TOTIENT 4 4

输出样例 #1

1
1
2

说明

In the first example, $ \varphi(1) = 1 $ for the first query, $ \varphi(2) = 1 $ for the second query and $ \varphi(6) = 2 $ for the third one.

Input

题意翻译

## 题目描述 你有一个数组$a_1,a_2,\dots,a_n$。 现在你需要完成$q$次操作,有以下两种操作形式: 1. `MULTIPLY l r x`,对于所有$i(l\le i\le r)$,将$a_i$乘上$x$。 2. `TOTIENT l r`,求出$\varphi(\prod_{i=l}^ra_i)$,对$10^9+7$取模后的结果。其中$\varphi$表示欧拉函数,$\varphi(n)$的定义为$1\dots n$中与$n$互质的数的个数。 ## 输入输出格式 ### 输入格式 输入的第一行有两个数$n,q$,保证$1\le n\le 4\times10^5,1\le q\le 2\times 10^5$,表示序列的长度以及询问的个数。 第二行是$n$个数$a_i$表示序列,满足$1\le a_i\le 300$。 在接下来的$q$行,每行表示一个操作,其具体意义见题目描述。 保证数据中至少有一次操作2。 ### 输出格式 对于每一个操作2输出一行,表示答案。 ## 输入输出样例 ### 输入样例#1: ```plain 4 4 5 9 1 2 TOTIENT 3 3 TOTIENT 3 4 MULTIPLY 4 4 3 TOTIENT 4 4 ``` ### 输出样例#1: ```plain 1 1 2 ``` ## 说明 在样例中: 对于第1个询问$\varphi(1)=1$; 对于第2个询问$\varphi(2)=1$; 对于第3个询问$\varphi(6)=2$。

加入题单

上一题 下一题 算法标签: