Pagini recente » Cod sursa (job #1483400) | Cod sursa (job #1949080) | Cod sursa (job #3130562) | Cod sursa (job #1371598) | Cod sursa (job #1483002)
#include <bits/stdc++.h>
#define nmax 10000010
#define mod 847129
using namespace std;
int n, m, sol;
unsigned int aux, p3[25];
char s[nmax], t[25];
vector <unsigned int> h[mod + 2];
bool Cautare(unsigned int x)
{
unsigned int i;
int r = x % mod;
for (i = 0; i < h[r].size(); i++)
if (h[r][i] == x) return true;
return false;
}
int main()
{
int i;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
fin >> (s + 1);
n = strlen(s + 1);
p3[1] = 1;
for (i = 2; i <= 20; i++) p3[i] = p3[i - 1] * 3;
while (fin >> (t + 1))
{
m = strlen(t + 1);
aux = 0;
for (i = 1; i <= m; i++)
aux = aux + p3[i] * (t[i] - 97);
if (!Cautare(aux))
h[aux % mod].push_back(aux);
}
aux=0;
for (i = 1; i <= m; i++) aux = aux + p3[i] * (s[i] - 97);
sol += Cautare(aux);
for (i = m + 1; i <= n; i++)
{
aux /= 3;
aux = aux + p3[m] * (s[i]-97);
sol += Cautare(aux);
}
fout << sol << "\n";
fout.close();
return 0;
}