Pagini recente » Cod sursa (job #3233742) | Cod sursa (job #779431) | Cod sursa (job #3213027) | Cod sursa (job #1193571) | Cod sursa (job #709288)
Cod sursa(job #709288)
#include<stdio.h>
#include<string.h>
char a[2000000],b[2000000];
int v[2000000];
int main()
{FILE *fo=fopen("strmatch.in","r"),*fc=fopen("strmatch.out","w");
int n=0,m=0,i=0,j=0;
unsigned ha=0,hb=0;
fscanf(fo,"%s",&a);
fscanf(fo,"%s",&b);
n=strlen(a);
m=strlen(b);
for(i=0;i<n;i++)
{ha+=a[i];
hb+=b[i];
}
for(i=0,j=1;i<m-n;i++)
{if(ha==hb)
{v[0]++;
v[j++]=i;
}
hb=hb-b[i]+b[i+n];
}
fprintf(fc,"%d\n",v[0]);
if(v[0]>1000)
{for(i=1;i<=1000;i++)
fprintf(fc,"%d ",v[i]);
}
else
{for(i=1;v[i]!=0;i++)
fprintf(fc,"%d ",v[i]);
}
fclose(fo);
fclose(fc);
return 0;
}