CF1878F.Vasilije Loves Number Theory
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Vasilije is a smart student and his discrete mathematics teacher Sonja taught him number theory very well.
He gave Ognjen a positive integer n .
Denote d(n) as the number of positive integer divisors of n , and denote gcd(a,b) as the largest integer g such that a is divisible by g and b is divisible by g .
After that, he gave Ognjen q queries, and there are 2 types of queries.
- 1 , x — set n to n⋅x , and then answer the following question: does there exist a positive integer a such that gcd(a,n)=1 , and d(n⋅a)=n ?
- 2 — reset n to its initial value (before any queries).
Note that n does not get back to its initial value after the type 1 query.
Since Ognjen is afraid of number theory, Vasilije promised him that after each query, d(n)≤109 , however, even with that constraint, he still needs your help with this problem.
输入格式
The first line contains a positive integer t , ( 1≤t≤100 ) — the number of test cases.
The first line of each test case contains 2 integers, n and q ( 1≤n≤106 , 1≤q≤1000 ) — the number n and the number of queries.
The following q lines contain an integer k ( 1≤k≤2 ), if k=1 then there is another integer in this line x ( 1≤x≤106 ) — the description of the queries.
It is guaranteed that, for the given input, d(n) does not exceed 109 at any point.
It is guaranteed that the sum of q over all test cases doesn't exceed 103 .
输出格式
For each type 1 query, you should output "YES" if there exist such positive integer a that gcd(a,n)=1 and d(n⋅a)=n , and "NO" if he can't.
You can output the answer in any case (for example, the strings "yEs", "yes", "Yes", and "YES" will be recognized as a positive answer).
输入输出样例
输入#1
7 1 5 1 1 1 2 2 1 8 1 9 20 4 1 3 2 1 7 1 12 16 10 1 6 1 6 1 10 1 9 1 1 1 9 1 7 1 3 1 2 1 10 9 1 1 3 8 1 1 2 8 3 1 5 1 8 1 10 11 5 1 8 1 2 1 1 1 3 1 1
输出#1
YES YES YES YES YES NO YES YES NO YES YES YES NO YES NO YES YES NO NO YES NO NO YES NO NO NO NO
说明/提示
In the first test case, we initially have n=1 .
After the first query: n=1 , d(n)=1 , so by taking a=1 , d(n⋅a)=n , and the answer to this query is "YES".
After the second query: n=2 , d(n)=2 , we can, again, take a=1 , d(n⋅a)=n , and the answer to this query is "YES".
After the third query n=1 , and this is a type 2 query so we don't answer it.
After the fourth query: n=8 , and by taking a=3 , d(n⋅a)=d(24)=8=n , so the answer is "YES".
After the fifth query: n=72 , now we can take a=637 to get n⋅a=45864 , and d(n⋅a)=72=n , so the answer is "YES".
In the second test case, we initially have n=20 .
After the first query: n=60 , and the answer is "YES".
After the second query: n=20 , this is a type 2 query, so we don't answer it.
After the third query: n=140 , and it can be proven that no matter which positive integer a we take, d(n⋅a) will never be equal to n , so the answer to this query is "NO".
After the fourth query: n=1680 . It can be proven that there exists a positive integer a , such that d(n⋅a)=n , so the answer is "YES".