Cod sursa(job #1038918)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 22 noiembrie 2013 10:08:00
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<bitset>

using namespace std;

#define max_mod 614279
#define init_v 276997

ifstream f("dtcsu.in");
ofstream g("dtcsu.out");

bitset<max_mod> H;

int Prime[5] = {4 , 614279 , 614147 , 429719 , 429701};
int fact[6] = {5 , 2 , 3 , 5 , 7 , 11};
long long x;
int q , nr;

void fhash( int mod , long long v ){
	H[v%mod] = 1;
}

bool querry( int mod , long long v ){
	return H[v%mod] == 1;
}

void read(){
	
	for( int j , i = 1 ; i <= init_v ; i++ ){
		f>>x;
		
		for( j = 1 ; j <= Prime[0] ; j++ )
			fhash(Prime[j] , x);
		
	}
		
}

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;
	
	for( int j , i = 1 ; i <= q ; i++ ){
		f>>x;
		
		for( j = 1 ; j <= Prime[0] ; j++ )
			if( querry(Prime[j] , x) == 0 )
				break;
		
		if( j <= Prime[j] )
			continue;
		
		if( test(x) )
			nr++;
		
	}
	
	g<<nr<<"\n";
	
	return 0;
}