Pagini recente » Cod sursa (job #1077763) | Cod sursa (job #1412593) | Cod sursa (job #2595766) | Cod sursa (job #2838900) | Cod sursa (job #1726903)
#include<iostream>
#include<cstring>
#include<vector>
#include<fstream>
#define MOD 66013
using namespace std;
typedef unsigned int uint;
string S,s;
vector<int>v[MOD+3];
uint verif(uint x)
{
int i;
uint k=x%MOD;
for(i=0;i<v[k].size();i++)
if(v[k][i]==x)
return 1;
return 0;
}
void add(uint x)
{
uint k=x%MOD;
if(verif(x)==0)
v[k].push_back(x);
}
uint put[25],sum,i,n,h,sol;
int main()
{
ifstream cin("abc2.in");
ofstream cout("abc2.out");
cin>>S;
put[0]=1;
for(i=1;i<20;i++)
put[i]=put[i-1]*3;
while(cin>>s)
{
n=s.size();
uint sum=0;
for(i=0;i<n;i++)
{
sum+=(s[i]-'a')*put[i];
}
add(sum);
}
uint h=0;
for(i=0;i<n;i++)
{
h=h+(S[i]-'a')*put[i];
}
if(verif(h)==1){
sol++;
// cout<<"1";
}
for(i=n;i<S.size();i++)
{
h/=3;
h+=(S[i]-'a')*put[n-1];
if(verif(h)==1){
sol++;
// cout<<i-n+1;
}
}
cout<<sol;
return 0;
}