Pagini recente » Cod sursa (job #322804) | Cod sursa (job #2153067) | Cod sursa (job #983204) | Cod sursa (job #1310187)
#include<fstream>
#include<cstring>
#include<bitset>
#define NMAX 10000001
#define MOD 335544320
using namespace std;
char s[NMAX],sir[25];
bitset<MOD>H;
int n,m,i,sol;
long long t0,cheie;
int main()
{
ifstream f("abc2.in");
ofstream g("abc2.out");
f.getline(s+1,NMAX);
n=strlen(s+1);
while(f.getline(sir+1,25))
{
m=strlen(sir+1);
cheie=0;
for (i=1;i<=m;++i)
cheie=(3*cheie+(sir[i]-'a'))%MOD;
H[cheie]=1;
}
int d=1;
for (i=1;i<=m;++i)
{
t0=(3*t0+(s[i]-'a'))%MOD;
d=d*3;
}
d=d/3;
sol=0;
for (i=0;i<n-m;i++)
{
if (H[t0]==1) ++sol;
t0=(3*(t0-(s[i+1]-'a')*d)+(s[i+m+1]-'a'))%MOD;
}
g<<sol<<"\n";
return 0;
}