标签:ems accept long div roman code 根据 memset --
3 3 2 6 33
Yes Yes No
这题并不难,可是一开始的数组被我开太大了,就没反应过来了,用一个 set就过了。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <set> 6 #include <algorithm> 7 #define ll long long int 8 #define Ma 1000000007 9 #define N 10005 10 using namespace std; 11 ll prime[N],p[N]; 12 int n,m,k=0; 13 set<ll> s; 14 void IsPrime() { 15 memset(prime, 0, sizeof(prime)); 16 prime[0] = prime[1] = 1; 17 for (int i = 2; i < N; i++){ 18 if (!prime[i]) { 19 p[++k] = i; 20 for (int j = 2; j * i < N; j++) 21 prime[i * j] = 1; 22 } 23 } 24 } 25 26 int main(){ 27 28 scanf("%d%d",&n,&m); 29 IsPrime(); 30 for(int i=1;i<=n;i++){ 31 ll ans=1; 32 for(int j=1;j<=i;j++){ 33 ans=p[j]*ans%Ma; 34 } 35 s.insert(ans); 36 } 37 while(m--){ 38 ll h; 39 scanf("%lld",&h); 40 41 if(s.count(h)){ 42 printf("Yes\n"); 43 }else{ 44 printf("No\n"); 45 } 46 } 47 return 0; 48 }
标签:ems accept long div roman code 根据 memset --
原文地址:http://www.cnblogs.com/zllwxm123/p/7260270.html