Cod sursa(job #1016363)

Utilizator VmanDuta Vlad Vman Data 26 octombrie 2013 09:18:54
Problema Dtcsu Scor Ascuns
Compilator cpp Status done
Runda Marime 0.99 kb
#include <cstdio>
#include <bitset>
using namespace std;

#define ll long long

int Q;
ll X;
int F = 3999991;
bitset<4000000> filter;

int main() {
    freopen("dtcsu.in","r", stdin);
    freopen("dtcsu.out", "w", stdout);
    
    for (int i=0; i<276997; ++i) {
        scanf("%lld", &X);
        filter.set(X % F);
    }

    /*
    for (int i=0; i<nrF; ++i) {
        int nr = 0;
        for (int j=0; j<100000; ++j)
            if (filter[i].test(j)) ++nr;
        printf("%d %d\n", nr, F[i]);
    }
    return 0;
    */
     
    scanf("%d", &Q);
    int total = 0;
    for (int i=0; i<Q; ++i) {
        scanf("%lld", &X);
        
        if (X==0 || !filter.test(X % F)) {
            continue;
        }
        
        while (X%210==0) X/=210;
        while (X%6==0) X/=6;
        while ((X&1)==0) X>>=1;
        while (X%3==0) X/=3;
        while (X%5==0) X/=5;
        while (X%7==0) X/=7;
        while (X%11==0) X/=11;
        if (X == 1) ++total;
    }
    printf("%d\n", total);
    
    return 0;
}