Pagini recente » Cod sursa (job #667094) | Cod sursa (job #2592689) | Monitorul de evaluare | Cod sursa (job #2982384) | Cod sursa (job #267092)
Cod sursa(job #267092)
#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=0,hashA2=0,hashB2=0, hashB1=0;
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\n", nr);
for(i=0;i<=1000;i++)
if(v[i]==1)
fprintf(g,"%d ", i);
return 0;
}