Pagini recente » Cod sursa (job #1687993) | Cod sursa (job #339530) | Cod sursa (job #147386) | Cod sursa (job #279312) | Cod sursa (job #1033910)
#include <cstdio>
#define TOTAL 276997
#define LEN 20
#define MAX_N 1000000000000000000
#define ll long long
char s[LEN];
ll power[5][60];
int nr[5] = { 2, 3, 5, 7, 11 };
int exp[5] = { 59, 37, 25, 21, 17 };
int p[5] = { 32, 32, 16, 16, 16 };
bool is_digit( char c ) {
return c >= '0' && c <= '9';
}
ll get_int( char A[] ) {
ll x = 0;
int i = 0;
while ( is_digit( A[i] ) ) {
x = ( ll ) x * 10 + ( A[i] - '0' );
++i;
}
return x;
}
void read( FILE *fin ) {
for ( int i = 0; i < TOTAL; ++i )
fgets( s, LEN, fin );
}
void pregen() {
for ( int i = 0; i < 5; ++i )
power[i][0] = 1;
for ( int i = 0; i < 5; ++i )
for ( int j = 1; j <= exp[i]; ++j )
power[i][j] = ( ll ) power[i][j - 1] * nr[i];
}
int main() {
FILE *fin, *fout;
fin = fopen( "dtcsu.in", "r" );
fout = fopen( "dtcsu.out", "w" );
read( fin );
pregen();
int q, ans = 0;
fscanf( fin, "%d\n", &q );
while ( q ) {
fgets( s, LEN, fin );
ll x = get_int( s );
for ( int i = 0; i < 5; ++i ) {
int j = p[i];
while ( j ) {
if ( x % power[i][j] == 0 )
x /= power[i][j];
j >>= 1;
}
if ( x == 1 ) {
++ans;
break;
}
}
--q;
}
fprintf( fout, "%d\n", ans );
fclose( fin );
fclose( fout );
}