Pagini recente » Cod sursa (job #220186) | Cod sursa (job #1874198) | Cod sursa (job #287068) | Cod sursa (job #1392280) | Cod sursa (job #1164553)
#include<fstream>
#include<bitset>
using namespace std;
#define nr_hash 5
#define nr_linii 276997
#define max_mod 1017329
FILE*f = fopen("dtcsu.in" , "r");
ofstream g("dtcsu.out");
int fact[] = { 0 , 2 , 3 , 5 , 7 , 11 };
int P[] = { 1002493 , 1017329 , 644101 , 982099 , 1000003 };
long long n , nr;
char sir[100];
int sol;
bool ok;
bitset<max_mod>H[nr_hash];
long long get_nr(){
fgets( sir , 100 , f );
long long nr = 0;
int k = 0;
while( sir[k] >= '0' && sir[k] <= '9' ){
nr = nr*10 + sir[k] - '0';
}
return nr;
}
void hash1( long long nr ){
for( int i = 0 ; i < nr_hash ; i++ ){
H[i][ nr % P[i] ] = 1;
}
}
void read(){
for( int i = 1 ; i <= nr_linii ; i++ ){
hash1( get_nr() );
}
}
bool verif( long long nr ){
for( int i = 0 ; i < nr_hash ; i++ )
if( H[i][ nr % P[i] ] == 0 )
return 0;
return 1;
}
int main(){
read();
n = get_nr();
for( int i = 1 ; i <= n ; i++ ){
nr = get_nr();
ok = verif( nr );
if( ok ){
for( int j = 1 ; j <= 5 ; j++ ){
while( nr % fact[j] == 0 ){
nr /= fact[j];
}
}
if( nr == 1 ){
sol++;
}
}
}
g<<sol<<"\n";
return 0;
}