Pagini recente » Cod sursa (job #2471103) | Cod sursa (job #1093247) | Cod sursa (job #1979873) | Cod sursa (job #38633) | Cod sursa (job #1164590)
#include<fstream>
#include<bitset>
using namespace std;
#define nr_linii 276997
FILE*f = fopen("dtcsu.in" , "r");
ofstream g("dtcsu.out");
int fact[] = { 0 , 2 , 3 , 5 , 7 , 11 };
long long n , nr , aux;
char sir[100];
int sol;
bitset< 1<<22 >H1;
bitset< 1<<21 >H2;
void get_nr( long long &nr ){
fgets( sir , 100 , f );
nr = 0;
int k = 0;
while( sir[k] >= '0' && sir[k] <= '9' ){
nr = nr*10 + sir[k] - '0';
}
}
int hash1( long long nr ){
return (nr >> 24LL) & ((1 << 22) - 1);
}
int hash2( long long nr ){
return (nr >> 3LL) & ((1<<21) - 1);
}
void read(){
for( int i = 1 ; i <= nr_linii ; i++ ){
get_nr( nr );
H1[hash1(nr)] = true;
H2[hash2(nr)] = true;
}
}
bool verif( long long nr ){
return H1[hash1(nr)] && H2[hash2(nr)];
}
int main(){
read();
get_nr( n );
for( int i = 1 ; i <= n ; i++ ){
get_nr( nr );
if( nr & (-nr) )
nr /= (nr & (-nr));
if( verif( nr ) ){
for( int j = 1 ; j <= 5 ; j++ ){
while( nr > 1 && (( aux = nr/fact[j] ) * fact[j] == nr) ){
nr = aux;
}
}
if( nr == 1 ){
sol++;
}
}
}
g<<sol<<"\n";
return 0;
}