Pagini recente » Cod sursa (job #1862164) | Cod sursa (job #2541796) | Cod sursa (job #792078) | Cod sursa (job #1999469) | Cod sursa (job #2634241)
#include <bits/stdc++.h>
#define MOD 666013
#define baza 5
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
long long put(long long a,long long b)
{
if (b==0)
{
return 1;
}
long long rez=put(a,b/2);
if (b%2==0)
{
return (rez*rez)%MOD;
}
return ((rez*rez)%MOD*a)%MOD;
}
long long inv (long long a)
{
return put(a,MOD+2);
}
char s[10000001],s1[25];
long long n1,nr,n,imp,val1,nr1,lung,j,sum;
bool m[666015];
int main()
{
f>>s;
while (f>>s1)
{
n1=strlen(s1);
nr=0;
for (j=0;j<n1;j++)
{
nr=(nr*baza+(s1[j]-'a'+1))%MOD;
}
m[nr]=1;
lung=n1;
}
n=strlen(s);
imp=inv(put(baza,n1));
val1=put(baza,n1-1);
nr1=0;
for (j=0;j<n1;j++)
{
nr1=(1LL*nr1*baza+(s[j]-'a'+1))%MOD;
}
sum=sum+m[nr1];
for (j=1;j<n-n1+1;j++)
{
nr1=(nr1-(1LL*val1*(s[j-1]-'a'+1))%MOD+MOD)%MOD;
nr1=(1LL*nr1*baza+(s[j+n1-1]-'a'+1))%MOD;
sum=sum+m[nr1];
}
g<<sum;
return 0;
}