Pagini recente » Cod sursa (job #800070) | Cod sursa (job #2168950) | Cod sursa (job #135252) | Cod sursa (job #3274668) | Cod sursa (job #1775563)
#include <fstream>
#include <cstring>
#include <vector>
#define MOD 666013
using namespace std;
ifstream fin ("abc2.in");
ofstream fout ("abc2.out");
vector < unsigned int > H[3 + MOD];
char S[1003], W[30];
int Search(int value)
{
int line = value % MOD;
for (int i = 0; i < H[line].size(); ++ i)
if (H[line][i] == value)
{
return 1;
}
return 0;
}
int main ()
{
fin >> 1 + S;
int N, M, sol = 0;
unsigned int nr, pows[25];
pows[1] = 1;
for (int i = 2; i <= 20; ++ i) pows[i] = 3 * pows[i-1];
while (fin >> 1 + W)
{
N = strlen (1 + W); nr = 0;
for (int i = 1; i <= N; ++ i) nr += pows[i] * (W[i] - 'a');
if (!Search (nr))
{
H[nr % MOD].push_back (nr);
}
}
nr = 0;
M = strlen (1 + S);
for (int i = 1; i <= N; ++ i) nr += pows[i] * (S[i] - 'a');
sol += Search (nr);
for (int i = 1 + N ; i <= M; ++ i)
{
nr /= 3;
nr += pows[N] * (S[i] - 'a');
sol += Search (nr);
}
fout << sol << '\n';
fout.close();
return 0;
}