Pagini recente » Cod sursa (job #1112419) | Cod sursa (job #2831940) | Cod sursa (job #1819049) | Cod sursa (job #2682600) | Cod sursa (job #1982284)
int v[1001],d[1001];
#include<stdio.h>
using namespace std;
int main(){
freopen("strmatch.in","r",stdin);
freopen("strmatch.out","w",stdout);
int n1,n2,i,nr1,nr2,nr3,nr4,h,g,s,ci,j,ch,f,t;
char c;
scanf("%c",&c);
n1=666013;
n2=1000003;
i=0;
nr1=0;
nr2=0;
h=1;
while(c!='\n'){
if(c>='0'&&c<='9')
g=c-47;
else if(c>='A'&&c<='Z')
g=c-54;
else if(c>='a'&&c<='z')
g=c-60;
if(i==0){
nr1=nr1+1;
nr2=nr2+1;
}
else{
ci=i;
s=1;
while(ci!=0){
s=s*62;
s=s%n1;
}
nr1=nr1+s;
ci=i;
s=1;
while(ci!=0){
s=s*62;
s=s%n2;
}
nr2=nr2+s;
}
scanf("%c",&c);
h++;
}
h--;
scanf("%c",&c);
for(i=1;i<=h;i++){
j=0;
nr3=0;
nr4=0;
if(c>='0'&&c<='9')
g=c-47;
else if(c>='A'&&c<='Z')
g=c-54;
else if(c>='a'&&c<='z')
g=c-60;
d[i]=g;
if(i==0){
nr3=nr3+1;
nr4=nr4+1;
}
else{
ci=j;
s=1;
while(ci!=0){
s=s*62;
s=s%n1;
}
nr3=nr3+s;
ci=i;
s=1;
while(ci!=0){
s=s*62;
s=s%n2;
}
nr4=nr4+s;
}
scanf("%c",&c);
}
h++;
ch=h;
f=1;
t=1;
while(c!='\n'){
if(nr1==nr3&&nr2==nr4){
v[f]=h-ch;
f++;
}
if(c>='0'&&c<='9')
g=c-47;
else if(c>='A'&&c<='Z')
g=c-54;
else if(c>='a'&&c<='z')
g=c-60;
d[h]=g;
ci=ch-1;
s=1;
while(ci!=0){
s=s*62;
s=s%n1;
}
nr3=nr3+nr3;
nr3=nr3-(d[t]*s)%n1;
nr3=(nr3*62)%n1;
nr3=(nr3+g)%n1;
nr3=nr4+nr4;
nr3=nr4-(d[t]*s)%n2;
nr3=(nr4*62)%n2;
nr3=(nr4+g)%n2;
t++;
}
printf("%d\n",f-1);
for(i=1;i<f;i++)
printf("%d ",v[i]);
return 0;
}