当前位置: 代码迷 >> 综合 >> Hust oj 2125 钱多多(水题)
  详细解决方案

Hust oj 2125 钱多多(水题)

热度:20   发布时间:2023-12-22 04:34:53.0
钱多多
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 56(24 users) Total Accepted: 25(22 users) Rating:  Special Judge: No
Description

Woods和他的GirlFriendGF)去银行取钱,Woods拿出一沓银行卡问GF:“想取多少都行,说吧。”GF说:“你看着办吧,难道我喜欢什么样的数字你还不了解么?”

这下Woods可难办了。他当然知道不喜欢235,但是GF还有N个不喜欢的数字,所以Woods取出钱的数目M不能只和这N+3个数字有关(即素因子只包含这N+3个数字的数她都不喜欢)你能帮Woods判断一下他取出来的钱数M能否让GF满意吗?

Input

多组测试数据。第一行两个整数NM,(1<=N<=101<=M<=1000000000),N代表GF不喜欢的数字的个数,M代表Woods取出钱的数目(真有钱啊……)。

第二行N个以空格隔开的素数ai2<=ai<1000000),代表GF不喜欢的数字。

Output

每组数据输出一行,如果是GF满意的输出“YES”,否则输出“NO”。(引号不输出)


Sample Input
2 14
7 11
2 13
7 11
10 1300
2 31 5 7 23 461 19 104729 29 37
10 1301
2 31 5 7 23 461 19 104729 29 37
Sample Output
NO
YES
YES
YES
Hint
对于第一组样例,取出来M=14,它的素因子为2和7,所以M只和2,3,5,7,11有关,所以M不是GF满意的。

对于第二组样例,取出来M=13,它的素因子为13,所以M不只和2,3,5,7,11有关,所以M是GF满意的。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;const int maxn = 25;
int a[maxn];bool judge(int x)
{for(int i=2;i<=sqrt(x);i++){if(x % i == 0)return false;}return true;
}
int main()
{int n,m;while(~scanf("%d%d",&n,&m)){a[0] = 2;a[1] = 3;a[2] = 5;for(int i=3;i<n+3;i++){scanf("%d",&a[i]);}int flag1 = 0;for(int i=2;i<=m;i++){if(m % i == 0 && judge(i) == true){int flag = 0;for(int j=0;j<n+3;j++){if(a[j] == i){flag = 1;break;}}if(flag == 0){flag1 = 1;break;}}}if(!flag1)printf("NO\n");elseprintf("YES\n");}
}