Cod sursa(job #1040138)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 23 noiembrie 2013 23:43:36
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <string.h>
#include <cstdio>
#include <bitset>


#define mod 666013
#define ll long long
#define buffer_size (1<<16)
#define MAX 1LL*1000000000000000000

using namespace std;

FILE *fin = fopen("dtcsu.in","r");
ofstream fout("dtcsu.out");

char buffer[buffer_size+10];
bitset <mod> s;

int d[5] = {2,3,5,7,11},nr;
unsigned long long x;
int n,i=0,k;
unsigned long long sol[300000],t;

long long get_int ()
{
    ll x=0;


    do
    {
        x= x*10 + (buffer[i]-'0');
        ++i;
        if (i==buffer_size)
        {
            fread (buffer,1,buffer_size,fin);
            i=0;
        }

    }while (buffer[i] != '\n');

    ++i;
    if (i==buffer_size)
        {
            fread (buffer,1,buffer_size,fin);
            i=0;
        }

    return x;
}

int main()
{
    fread (buffer,1,buffer_size,fin);

    for (k=1; k<=276997; ++k)
    {
        x = get_int ();
        s[x%mod] = 1;
    }

    n = get_int();

    for (int k=1; k<=n; ++k)
    {
        x = get_int();

        if (s[x%mod] == 0) continue;

        for (int i=0; i<5; ++i)
        {
            while (x%d[i]==0) x/=d[i];
        }

        if (x==1) ++nr;
    }

    fout<<nr;
}