Cod sursa(job #1391573)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 18 martie 2015 01:38:01
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <bitset>
#include <ctime>
#include <cstring>
#include <cstdlib>
#define read 276997
#define maximum 800000
using namespace std;
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");
bitset <800000> v;
const int prim[]={2,3,5,7,11};
long long x;
int q,k=4,h[5],sol;
char s[20];


int main()
{
    int i,j;
    srand(time(0));
    for (i=1;i<=k;i++)
        h[i]=rand()%(maximum-maximum/8)+maximum/8;
    for (i=1;i<=10;i++) {
        memset(s,0,sizeof(s));
        f.getline(s,20);
        x=0;
        j=0;
        while (s[j]!=NULL) {
            x=x*10+s[j]-'0';
            j++;
        }
        for (j=1;j<=k;j++)
            v[x%h[j]]=1;
    }

    f>>q;f.get();
    for (j=1;j<=q;j++) {
        memset(s,0,sizeof(s));
        f.getline(s,20);
        x=0;
        i=0;
        while (s[i]!=NULL) {
            x=x*10+s[i]-'0';
            i++;
        }
        for (i=1;i<=k;i++)
            if (v[x%h[i]]==0) {
                x=0;
                break;
            }
        if (x==0)
            continue;
        for (i=0;i<=4;i++)
            while (x%prim[i]==0)
                x/=prim[i];
        if (x!=1)
            continue;
        sol++;
    }
    g<<sol;

    return 0;
}