Pagini recente » Cod sursa (job #1400646) | Cod sursa (job #2718694) | Cod sursa (job #2249046) | Cod sursa (job #1383659) | Cod sursa (job #250720)
Cod sursa(job #250720)
#include<stdio.h>
#include<string.h>
struct nod{unsigned inf;nod *urm;};
nod *p[500009],*paux;
char text[10000010],cuv[30],*c1,*c2;
unsigned LT,LC,p3[20],i,rv,P,RV(char *CUV),hv,h=500009,sol,ok();
int cit;
void readd();
int main()
{
readd();
return 0;
}
void readd()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
scanf("%s",text);
cit=scanf("%s",cuv);LC=strlen(cuv);
p3[0]=1;for(i=1;i<20;i++)p3[i]=p3[i-1]*3;P=p3[LC-1];
while(cit!=EOF)
{
for(i=0;i<LC;i++)rv+=p3[i]*(unsigned)(cuv[i]-'a');
hv=rv%h;
for(paux=p[hv];paux;paux=paux->urm)if(rv==paux->inf)break;
if(!paux){paux=new nod;paux->inf=rv;paux->urm=p[hv];p[hv]=paux;}
cit=scanf("%s",cuv);
}
c1=text;c2=&c1[LC];rv=RV(c1);sol+=ok();//LT trebuie modificat
for(;*c2;)
{
rv-=(unsigned)(c1[0]-'a');
rv/=3;
rv+=P*(unsigned)(c2[0]-'a');
sol+=ok();
c1++;c2++;
}
printf("%u",sol);
}
unsigned RV(char *CUV)
{ unsigned ret=0;
return ret;
}
unsigned ok()
{
hv=rv%h;
for(paux=p[hv];paux;paux=paux->urm)if(rv==paux->inf)return 1;
return 0;
}