Pagini recente » Cod sursa (job #1813786) | Cod sursa (job #2621747) | Cod sursa (job #2745855) | Cod sursa (job #2618386) | Cod sursa (job #2588827)
#include <iostream>
#include <fstream>
#include <queue>
#include <map>
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
const int MOD = 666013;
string initial;
int cate[MOD];
int Get(string a)
{
int has = 0;
for (int i=0; i<a.length(); i++)
{
has = (has*26 + a[i])%MOD;
}
}
int main()
{
in >> initial;
for (int l=1; l<=20; l++)
{
int has = 0;
int p =1;
for (int i=0; i<l; i++)
{
has = (26*has + initial[i])%MOD;
if (i != 0) p = (p*26)%MOD;
}
cate[has]++;
for (int i=l; i<initial.length(); i++)
{
has = ((has - (initial[i-l]*p)%MOD + MOD)*26 + initial[i])%MOD;
cate[has]++;
}
}
string moment;
int cnt = 0;
while (in >> moment)
{
int has = 0;
for (int i=0; i<moment.length(); i++)
{
has = (26*has + moment[i])%MOD;
}
cnt += cate[has];
cate[has] = 0;
}
out << cnt;
return 0;
}