Pagini recente » Cod sursa (job #2702802) | Cod sursa (job #346010) | Cod sursa (job #2573138) | Cod sursa (job #2053511) | Cod sursa (job #1039590)
#include<fstream>
#include<bitset>
#include<stdio.h>
using namespace std;
#define max_mod 464141
#define init_v 276997
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");
bitset<max_mod> H[2];
int Prime[3] = {2 , 464137 , 464141};
int fact[6] = {5 , 2 , 3 , 5 , 7 , 11};
long long x;
int q , nr;
char str[30];
void fhash( int mod , long long v , int ind ){
H[ind].set(v%mod);
}
bool querry( int mod , long long v , int ind ){
return H[ind].test(v%mod);
}
void read(){
for( int j , i = 1 ; i <= init_v ; i++ ){
//f.getline(str , 30);
//sscanf(str , "%lld" , &x);
f>>x;
for( j = 1 ; j <= Prime[0] ; j++ )
fhash(Prime[j] , x , j);
}
}
bool test( long long v ){
for( int i = 1 ; i <= fact[0] ; i++ ){
while( v % fact[i] == 0 )
v /= fact[i];
}
return v == 1;
}
int main(){
read();
f>>q; //f.getline(str , 30);
for( int j , i = 1 ; i <= q ; i++ ){
//f.getline(str , 30);
//sscanf(str , "%lld" , &x);
f>>x;
for( j = 1 ; j <= Prime[0] ; j++ )
if( querry(Prime[j] , x , j) == 0 )
break;
if( j <= Prime[0] )
continue;
if( test(x) )
nr++;
}
g<<nr<<"\n";
return 0;
}