Pagini recente » Cod sursa (job #3211207) | Cod sursa (job #1219153) | Cod sursa (job #2728390) | Cod sursa (job #3125235) | Cod sursa (job #1035378)
#include<cstdio>
#include<vector>
using namespace std;
const int MOD = 10001;
const int DIM = 10000;
int i,SOL,poz; long long X,Q;
char buff[DIM];
vector<long long> Hash[MOD];
void Read(long long &X)
{
X=0;
while(buff[poz]<'0' || buff[poz]>'9')
if(++poz==DIM) fread(buff,1,DIM,stdin),poz=0;
while(buff[poz]>='0' && buff[poz]<='9')
{
X=X*10+buff[poz]-'0';
if(++poz==DIM) fread(buff,1,DIM,stdin),poz=0;
}
}
int main()
{
freopen("dtcsu.in","r",stdin);
freopen("dtcsu.out","w",stdout);
for(i=1;i<=276997;i++)
{
Read(X);
if(X&1) Hash[X%MOD].push_back(X);
// bagam doar numerele impare in hash
}
Read(Q);
for(;Q;Q--)
{
Read(X); if(!X) continue;
X/=(X&(-X)); // eliminam toti factorii de 2 din numar
for(vector<long long>::iterator it=Hash[X%MOD].begin();it!=Hash[X%MOD].end();it++)
if(*it==X) {SOL++; break;}
}
printf("%d\n",SOL);
return 0;
}