Pagini recente » Cod sursa (job #179365) | Cod sursa (job #2449491) | Cod sursa (job #55559) | Cod sursa (job #2343478) | Cod sursa (job #2588839)
#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 main()
{
in >> initial;
for (int l=1; l<=20; l++)
{
int has = 0;
int p =1;
for (int i=0; i<l; i++)
{
has = (3*has + initial[i])%MOD;
if (i != 0) p = (p*3)%MOD;
}
cate[has]++;
for (int i=l; i<initial.length(); i++)
{
has = ((has - (initial[i-l]*p)%MOD + MOD)*3 + 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 = (3*has + moment[i])%MOD;
}
cnt += cate[has];
cate[has] = 0;
}
out << cnt;
return 0;
}