Pagini recente » Cod sursa (job #2334049) | Cod sursa (job #2785997) | Cod sursa (job #3208451) | Cod sursa (job #248975) | Cod sursa (job #1034485)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iomanip>
using namespace std;
const int Fact[10] = {2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531};
const int Mod[10] = {100001, 100003, 100005, 100007, 100009, 100011, 100013, 100015, 100017, 100019};
int Is[10010], T, Ans;
long long N;
const int MaxB = 10000;
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 Codif(int Index, long long Num)
{
int X = 0;
while(Num)
{
X = (1LL * X * Fact[Index] + Num % 10) % Mod[Index];
Num /= 10;
}
return X;
}
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 < 10; ++ j)
Is[Codif(j, X) % 10010] = 1;
}
T = Get();
for(; T; T --)
{
N = Get();
bool OK = 1;
for(int j = 0; j < 10 && OK; ++ j)
if(!Is[Codif(j, N) % 10010])
OK = 0;
if(OK) Ans += OK;
}
printf("%i\n", Ans);
}