Pagini recente » Cod sursa (job #535692) | Cod sursa (job #419292) | Cod sursa (job #2727051) | Cod sursa (job #1904506) | Cod sursa (job #2771310)
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int BUFFSIZE(65536);
class InParser{
private:
FILE *fin;
char *buffer;
int poz;
char get_char(){
++poz;
if(poz == BUFFSIZE){
fread(buffer, 1, BUFFSIZE, fin);
poz = 0;
}
return buffer[poz];
}
public:
InParser(const char *fisier){
fin = fopen(fisier, "r");
poz = BUFFSIZE - 1;
buffer = new char[BUFFSIZE]();
}
InParser& operator >>(ull& n){
char c;
while(!isdigit(c = get_char()));
n = c - '0';
while(isdigit(c = get_char()))
n = n * 10 + c - '0';
return *this;
}
};
InParser fin("dtcsu.in");
ofstream fout("dtcsu.out");
const int BITS(22);
int MASK = (1 << BITS) - 1;
char bloomFilter[(1 << BITS) >> 3];
int main()
{
for(int i = 1; i <= 276997; ++i){
ull x;
fin >> x;
bloomFilter[(x & MASK) >> 3] |= (1 << ((x & MASK) & 7));
}
ull q;
fin >> q;
int rez = 0;
for(int i = 1; i <= q; ++i){
ull val;
fin >> val;
if(val && (bloomFilter[(val & MASK) >> 3] & (1 << ((val & MASK) & 7)))){
while(val % 2 == 0)
val >>= 1;
while(val % 3 == 0)
val /= 3;
while(val % 5 == 0)
val /= 5;
while(val % 7 == 0)
val /= 7;
while(val % 11 == 0)
val /= 11;
rez += (val == 1);
}
}
fout << rez << '\n';
return 0;
}