Pagini recente » Istoria paginii utilizator/fleschinrechin | Cod sursa (job #463008) | Cod sursa (job #783674) | Profil dianina | Cod sursa (job #778965)
Cod sursa(job #778965)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
#define mod 11003
vector <unsigned int> v[mod];
char c[10000001],sir[21];
inline void adauga(unsigned int x)
{
v[x%mod].push_back(x);
}
inline int cauta(unsigned int x)
{
int k;
k=x%mod;
for(vector <unsigned int> :: iterator it=v[k].begin();it!=v[k].end();it++)
if(*it==x)
return 1;
return 0;
}
int main ()
{
int i,n,m,p,nr;
unsigned int x;
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
fgets(c,sizeof(c),stdin);
n=strlen(c)-2;
m=-1;
while(feof(stdin)==0) {
fgets(sir,sizeof(sir),stdin);
if(m==-1)
m=strlen(sir)-2;
x=0;
for(i=0;i<=m;i++)
x=x*3+sir[i]-'a';
adauga(x);
}
fclose(stdin);
p=1;
for(i=1;i<=m;i++)
p=p*3;
x=0;
for(i=0;i<=m;i++)
x=x*3+c[i]-'a';
nr=cauta(x);
for(i=m+1;i<=n;i++) {
x=3*(x-p*(c[i-m-1]-'a'))+c[i]-'a';
nr=nr+cauta(x);
}
printf("%d",nr);
fclose(stdout);
return 0;
}