Cod sursa(job #1391585)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 18 martie 2015 02:07:17
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <bitset>
#include <cstring>
#include <unordered_set>
#define read 276997
using namespace std;
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");
bitset <800000> v;
const int h[]={782663,466013,510003,682663,479593,479593};
long long x;
int q,sol;
char s[20];

int main()
{
    int i,j;
    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++;
        }
        if (x&1) {
            for (j=0;j<=5;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++;
        }
        x/=(x^(x-1))&x;
        if (x==0)
            continue;
        for (i=0;i<=5;i++)
            if (v[x%h[i]]==0) {
                x=0;
                break;
            }

        while (x%2==0) x/=2;
        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)
            sol++;
    }
    g<<sol;

    return 0;
}