Pagini recente » Cod sursa (job #2450526) | Cod sursa (job #592011) | Cod sursa (job #2875886) | Cod sursa (job #338371) | Cod sursa (job #1042792)
#include<cstdio>
#include<bitset>
#define NMAX 276997
#define LL long long
#define LMAX 5000000
using namespace std;
FILE *fin,*fout;
int v[]={3,5,7,11},q,sol;
LL n,nr;
bitset<LMAX> use;
const int SZ=10000;
char input[SZ+1],*in;
LL conv()
{
LL nr=0;
for(;!(*in>='0' && *in<='9') && *in;in++);
if(in==input+SZ)
{
fread(input,1,SZ,fin);
in=input;
}
for(;*in>='0' && *in<='9';in++)
{
nr=nr*10+(*in-'0');
if(in+1==input+SZ)
{
fread(input,1,SZ,fin);
in=input-1;
}
}
return nr;
}
int hash(LL x,int k)
{
int rez=0;
for(;x;x/=10)
rez=(rez*k+x%10+1)%LMAX;
return rez;
}
int main()
{
fin=fopen("dtcsu.in","r");
fout=fopen("dtcsu.out","w");
fread(input,1,SZ,fin);
in=input;
for(int i=0;i<NMAX;i++)
{
n=conv();
for(int i=1;i<=3;i++)
use[ hash(n,i) ]=1;
}
q=conv();
for(;q;q--)
{
n=conv();
if(!use[hash(n,1)] || !use[hash(n,2)] || !use[hash(n,3)] )
continue;
for(int i=0;i<4;i++)
for(;n%v[i]==0;n/=v[i]);
sol+=((n&(n-1))==0);
}
fprintf(fout,"%d",sol);
return 0;
}