Pagini recente » Cod sursa (job #894226) | Cod sursa (job #2278583) | Cod sursa (job #1326380) | Cod sursa (job #1064703) | Cod sursa (job #2225801)
#include <cstdio>
#include <vector>
#define MOD 35264
using namespace std;
char s[10000001],cc[25];
vector <int> v[MOD];
int elem;
int main()
{
FILE *fin=fopen ("abc2.in","r");
FILE *fout=fopen ("abc2.out","w");
int i,l;
long long nr,p3,sol;
char c;
fgets (s,10000000,fin);
fgets (cc,25,fin);
elem=0;
while (1){
nr=0;
i=0;
while (cc[i]!='\n'){
nr=nr*3+(cc[i]-'a');
i++;
}
v[nr%MOD].push_back(nr);
l=i;
c=fgetc (fin);
fgets (cc+1,25,fin);
if (c!='a' && c!='b' && c!='c')
break;
cc[0]=c;
}
p3=1;
for (i=1;i<l;i++)
p3*=3;
nr=0;
sol=0;
for (i=0;i<l;i++){
if (s[i]=='\n')
break;
nr=nr*3+(s[i]-'a');
}
for (i=0;i<v[nr%MOD].size();i++){
if (v[nr%MOD][i]==nr){
sol++;
break;
}
}
for (i=l;s[i]!='\n';i++){
nr=nr-p3*(s[i-l]-'a');
nr=nr*3+(s[i]-'a');
for (int j=0;j<v[nr%MOD].size();j++){
if (v[nr%MOD][j]==nr){
sol++;
break;
}
}
}
fprintf (fout,"%lld",sol);
return 0;
}