Codeforces 687B - Remainders Game (剩余定理)
2016-07-22 15:59
441 查看
B. Remainders Game
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Today Pari and Arya are playing a game called Remainders.
Pari chooses two positive integer x and k,
and tells Arya k but not x.
Arya have to find the value
.
There are n ancient numbers c1, c2, ..., cn and
Pari has to tell Arya
if
Arya wants. Given k and the ancient values, tell us if Arya has a winning strategy independent of value of x or
not. Formally, is it true that Arya can understand the value
for
any positive integer x?
Note, that
means
the remainder of x after dividing it by y.
Input
The first line of the input contains two integers n and k (1 ≤ n, k ≤ 1 000 000) —
the number of ancient integers and value k that is chosen by Pari.
The second line contains n integers c1, c2, ..., cn (1 ≤ ci ≤ 1 000 000).
Output
Print "Yes" (without quotes) if Arya has a winning strategy independent of value of x,
or "No" (without quotes) otherwise.
Examples
input
output
input
output
Note
In the first sample, Arya can understand
because 5 is
one of the ancient numbers.
In the second sample, Arya can't be sure what
is.
For example 1 and 7 have the
same remainders after dividing by 2 and 3,
but they differ in remainders after dividing by 7.
通过中国剩余定理得知x%m1=a1,x%m2=a2...x%mn=an 若a1~an已知,且gcd(mi,mj)=1,令M=πmi,则x%k1*M是可以确定的(因为x的全部解为(k*M+sum(ai*Mi*Mi^(-1)))),当k1=1时即为题目所问。所以只需要判断k的所有因数是否包含在πci中,即求lcm(ci,ci+1)(i<n)可不可以被k整除。
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Today Pari and Arya are playing a game called Remainders.
Pari chooses two positive integer x and k,
and tells Arya k but not x.
Arya have to find the value
.
There are n ancient numbers c1, c2, ..., cn and
Pari has to tell Arya
if
Arya wants. Given k and the ancient values, tell us if Arya has a winning strategy independent of value of x or
not. Formally, is it true that Arya can understand the value
for
any positive integer x?
Note, that
means
the remainder of x after dividing it by y.
Input
The first line of the input contains two integers n and k (1 ≤ n, k ≤ 1 000 000) —
the number of ancient integers and value k that is chosen by Pari.
The second line contains n integers c1, c2, ..., cn (1 ≤ ci ≤ 1 000 000).
Output
Print "Yes" (without quotes) if Arya has a winning strategy independent of value of x,
or "No" (without quotes) otherwise.
Examples
input
4 5 2 3 5 12
output
Yes
input
2 7 2 3
output
No
Note
In the first sample, Arya can understand
because 5 is
one of the ancient numbers.
In the second sample, Arya can't be sure what
is.
For example 1 and 7 have the
same remainders after dividing by 2 and 3,
but they differ in remainders after dividing by 7.
通过中国剩余定理得知x%m1=a1,x%m2=a2...x%mn=an 若a1~an已知,且gcd(mi,mj)=1,令M=πmi,则x%k1*M是可以确定的(因为x的全部解为(k*M+sum(ai*Mi*Mi^(-1)))),当k1=1时即为题目所问。所以只需要判断k的所有因数是否包含在πci中,即求lcm(ci,ci+1)(i<n)可不可以被k整除。
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; #define F(x,a,b) for (int x=a;x<=b;i++) #define me(x) memset(x,0,sizeof(a)) #define MAXN 10100000 #define ll long long int gcd(int a,int b) {return b?gcd(b,a%b):a;} int a[MAXN]; int main() { int n,m;ll k; scanf("%d%d",&n,&m); F(i,1,n)scanf("%d",&a[i]); k=a[1];F(i,2,n) k%a[i]?k=k/gcd(k,a[i])*a[i]%m:k=k*(a[i]/gcd(k,a[i]))%m; k%m?cout<<"No":cout<<"Yes"; }
相关文章推荐
- hd 1789 Doing Homework again
- 关于container_of和list_for_each_entry 及其相关函数的分析
- 使用main方法调用http请求本地服务器的某个servlet报错问题
- 2016 Multi-University Training Contest 2 1012 La Vie en rose (暴力)
- 【HDU-oj】-2124-Repair the Wall(贪心)
- Failed to write core dump. minidumps are not enabled by default on client version of windows
- HDOJ 5744 (2016多校联合训练 Training Contest 2) Keep On Movin
- 2016 Multi-University Training Contest 2 1011 Keep On Movin (简单数学)
- 【杭电2124】Repair the Wall
- foxmail不能登录网易企业邮箱
- 暴力交叉匹配——La Vie en rose ( HDU 5745 )(2016 Multi-University Training Contest 2 1012)
- IBM SPSS Modeler算法系列-----决策树CHAID算法
- vsftpd login fail 530错误
- 2016 Multi-University Training Contest 2 1012 La Vie en rose
- HDOJ 2124 Repair the Wall
- 2016 Multi-University Training Contest 2 1009 It's All In The Mind (贪心)
- 2016 Multi-University Training Contest 2 1001 Acperience (简单数学)
- HDU5738 2016 Multi-University Training Contest 2 (组合数学+极角排序)
- 杭电- 1789 Doing Homework again
- 二分法-Raising Modulo Numbers