Pagini recente » Cod sursa (job #2889112) | Cod sursa (job #2858652) | Cod sursa (job #825019) | Cod sursa (job #1828574) | Cod sursa (job #267090)
Cod sursa(job #267090)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Const 100023
#define Const2 100007
#define LP 101
int main()
{
char A[200001];
char B[200001];
int v[200001];
int nr=0,i, hashA1,hashA2,hashB2, hashB1;
FILE *f=fopen("strmatch.in" , "rt");
FILE *g=fopen("strmatch.out" , "wt");
fscanf(f , "%s" , A);
fscanf(f , "%s" , B);
if(strlen(B)<strlen(A))
{
fprintf(g, "0");
fclose(g);
return 0;
}
for(i=0;i<strlen(A);i++)
{
hashA1=(hashA1+((B[i]*LP)%Const))%Const;
hashA2=(hashA2+((B[i]*LP)%Const))%Const;
}
for(i=0;i<strlen(B);i++)
{
hashB1=(hashB1+((A[i]*LP)%Const))%Const;
hashB2=(hashB2+((A[i]*LP)%Const))%Const;
}
if(hashB1==hashA1 && hashB2==hashA1)
{
v[0]=1;
nr++;
}
fprintf(g,"%d", nr);
for(i=0;i<=1000;i++)
if(v[i]==1)
fprintf(g,"%d", i);
return 0;
}