Nu aveti permisiuni pentru a descarca fisierul grader_test8.ok
Cod sursa(job #1031853)
Utilizator | Data | 15 noiembrie 2013 18:30:46 | |
---|---|---|---|
Problema | Dtcsu | Scor | 0 |
Compilator | cpp | Status | done |
Runda | FMI No Stress 4 | Marime | 1 kb |
#include <cstdio>
#include <bitset>
#define NR_GOOD 276997
#define MOD1 ((1 << 22) + 1)
std::bitset<MOD1> posOk;
unsigned long long cit() {
char lin[20];
fgets(lin, sizeof(lin), stdin);
unsigned long long val = 0;
int poz = 0;
while (lin[poz]) {
val = val * 10 + (lin[poz++] - '0');
}
return val;
}
bool isGood(unsigned long long val) {
while (val % 2) val /= 2;
while (val % 3) val /= 3;
while (val % 5) val /= 5;
while (val % 7) val /= 7;
while (val % 11) val /= 11;
return val == 1;
}
int main() {
freopen("dtcsu.in", "rb", stdin);
freopen("dtcsu.out", "wb", stdout);
for (int i = 0; i < NR_GOOD; i++) {
unsigned long long good = cit();
posOk[good % MOD1] = true;
}
int nrSol = 0, nrQ;
scanf("%d\n", &nrQ);
for (int i = 0; i < nrQ; i++) {
unsigned long long val = cit();
if (posOk[val % MOD1] && isGood(val)) {
nrSol++;
}
}
printf("%d\n", nrSol);
return 0;
}