Pagini recente » Cod sursa (job #444944) | Cod sursa (job #2473564) | Cod sursa (job #2201488) | Cod sursa (job #1134372) | Cod sursa (job #1034641)
#include <cstdio>
#include <cstdlib>
#include <bitset>
#include <cstring>
#include <algorithm>
#include <iomanip>
using namespace std;
const int Mod[5] = {666013, 1000003, 826663, 797593, 959473};
int T, Ans;
long long N;
bitset<1000010> Hash[5];
const int MaxB = 100000;
char Buf[MaxB];
int Ptr;
inline long long Get()
{
long long Ans = 0;
while(!isdigit(Buf[Ptr]))
if(++ Ptr >= MaxB)
fread(Buf, 1, MaxB, stdin), Ptr = 0;
while(isdigit(Buf[Ptr]))
{
Ans = Ans * 10 + Buf[Ptr] - '0';
if(++ Ptr >= MaxB)
fread(Buf, 1, MaxB, stdin), Ptr = 0;
}
return Ans;
}
int main()
{
freopen("dtcsu.in", "r", stdin);
freopen("dtcsu.out", "w", stdout);
fread(Buf, 1, MaxB, stdin);
for(int i = 1; i <= 276997; ++ i)
{
long long X = Get();
for(int j = 0; j < 5; ++ j)
Hash[j][X % Mod[j]] = 1;
}
T = Get();
for(; T; T --)
{
N = Get();
bool OK = 1;
for(int j = 0; j < 5 && OK; ++ j)
if(Hash[j][N % Mod[j]] == 0)
OK = 0;
if(OK)
{
N /= (N & (-N));
while(N % 15 == 0) N /= 15;
while(N % 3 == 0) N /= 3;
while(N % 5 == 0) N /= 5;
while(N % 7 == 0) N /= 7;
while(N % 11 == 0) N /= 11;
if(N == 1) Ans ++;
}
}
printf("%i\n", Ans);
}