time limit per test1 second

memory limit per test256 megabytes

inputstandard input

outputstandard 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 % k 的值

但是只告诉你k以及一系列x % ci;

做法:

根据中国剩余定理:

如果知道了

x % a;

x % b;

x % c;

x % d;

····

且a,b,c,d互质;

那么x % (abcd)就可以确定了;

那么因为要求x % k

所以对k进行质数分解;

各个质数肯定是互质的;

分解成k = p1^k1*p2^k2…pn^kn的形式

然后你还得知道这么一个东西

如果

a 是 b的倍数,即a %b==0

那么

x % a = y1

x % b = y2

那么y2 = y1 % b;

即

x = t1*a+ y1 ···①

x = t2*b + y2

因为a是b的倍数

所以①式总可以写成

x = t1*t3*b + y1的形式

显然y1 再对b取模就是y2了;

回到质数分解后

分解成k = p1^k1*p2^k2…pn^kn的形式

我们想知道

x % p1^k1

x % p2^k2

….

x % pn^kn

这样我们就能知道x %k了

根据上面的分析,我们只要在所给的ci里面找pi^ki的倍数就好了;

如果对于所有的t∈[1..n]总有数字ci是pt^kt的倍数;

因为如果ci是pt^kt的倍数,则x % ci知道了,相应的x%(pt^kt)按照上面的分析也能知道了->(x%ci) % (pt^kt)

既然知道了所有的x%pt^kt

那么就能求出x%k了;

#include <cstdio>

int n, k,cnt = 0;
int num[10000];
bool cover[10000] = { 0 }; int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d%d", &n, &k);
for (int i = 2;i <= k;i++)
if ((k%i) == 0)
{
int now = 1;
while ((k%i) == 0)
{
now = now*i;
k /= i;
}
num[++cnt] = now;//存的是p1^k1..pcnt^kcnt
}
for (int i = 1; i <= n; i++)
{
int x;
scanf("%d", &x);
for (int j = 1; j <= cnt; j++)
if (x % num[j] == 0)//如果是的x%pt^kt倍数,那么x%pt^kt就能求出来了
cover[j] = true;
}
for (int j = 1;j <= cnt;j++)
if (!cover[j])
{
puts("NO");
return 0;
}
puts("YES");
return 0;
}

【16.56%】【codeforces 687B】Remainders Game的更多相关文章

  1. 【 BowWow and the Timetable CodeForces - 1204A 】【思维】

    题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...

  2. 【16.23%】【codeforces 586C】Gennady the Dentist

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. 【codeforces 807D】Dynamic Problem Scoring

    [题目链接]:http://codeforces.com/contest/807/problem/D [题意] 给出n个人的比赛信息; 5道题 每道题,或是没被解决->用-1表示; 或者给出解题 ...

  4. 【codeforces 821E】Okabe and El Psy Kongroo

    [题目链接]:http://codeforces.com/problemset/problem/821/E [题意] 一开始位于(0,0)的位置; 然后你每次可以往右上,右,右下3走一步; (x+1, ...

  5. 【81.82%】【codeforces 740B】Alyona and flowers

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. 【23.39%】【codeforces 558C】Amr and Chemistry

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. 【42.59%】【codeforces 602A】Two Bases

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  8. 【77.78%】【codeforces 625C】K-special Tables

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  9. 【codeforces 755D】PolandBall and Polygon

    time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

随机推荐

  1. 微信支付v2开发(1) 微信支付URL配置

    本文介绍微信支付申请时如何设置授权目录及URL. 在申请微信支付时,第一项就会碰到下图的配置. 下面就对这一设置进行讲解! 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生 ...

  2. stm32单片机的封装

    接着去查看VREF...

  3. 【Codeforces Round #433 (Div. 1) B】Jury Meeting

    [链接]h在这里写链接 [题意] 有n个人,它们都要在某一时刻开始,全都到达0位置,然后维持最少k个时间单位,然后再全都回到原来的位置; 第i个人初始的位置是i. 且一共有m班航班. 每一班航班,要么 ...

  4. ThreadPoolExecutor – Java Thread Pool Example(java线程池创建和使用)

    Java thread pool manages the pool of worker threads, it contains a queue that keeps tasks waiting to ...

  5. 像Bootstrap一样比较热门的前端框架有哪些

    像Bootstrap一样比较热门的前端框架有哪些 一.总结 一句话总结:框架大同小异,可以多去各自官网看看效果(比较一下各自的不同点(也就是提供的不同的功能)),然后根据需求选择用哪个.我觉得boot ...

  6. HDU 1996汉诺塔VI

    题目: n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于 发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 子从下往上的大小仍保持 ...

  7. 11.1 Android显示系统框架_framebuffer原理及改进

    1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC- ...

  8. Android layer-list的属性和使用具体解释

    Android layer-list的属性和使用具体解释.layer-list是用来多个图层堆叠显示的,借这个特性能够做一些特别的效果(比方:阴影.以下的效果等),也能够投机取巧. 1.代码片 < ...

  9. JobService和JobScheduler机制在Android5.0以上保活

    JobService和JobScheduler机制在Android5.0以上保活 我们知道在Android5.0之前,Android源代码还是有不小漏洞的,导致非常多不光明的手段来进行++保活++.但 ...

  10. MSYS2是对MSYS的一个独立的重写,是基于当前的Cygwin和MinGW-w64重写的,以同原生的Windows软件有更好的交互性为目的

    MSYS2的官网:http://sourceforge.net/projects/msys2/ 官网的描述: Description MSYS2 is an independent rewrite o ...