Pagini recente » Cod sursa (job #1062926) | Cod sursa (job #1869604) | Cod sursa (job #248991) | Cod sursa (job #706904) | Cod sursa (job #2976262)
#include <iostream>
#include <cstring>
#define mod 100007
using namespace std;
int n,m,i,pp,ha,hb,nr,l[200001];
char a[200001],b[200001];
int main()
{
cin>>a+1;
cin>>b+1;
n=strlen (a+1);
m=strlen (b+1);
if (n>m)
{
cout<<"0";
return 0;
}
pp=1;
ha=0;
for (i=1; i<=n; i++)
{
ha=(ha*26+a[i])%mod;
if (i>1)
pp=(pp*26)%mod;
}
hb=0;
for (i=1; i<=n; i++)
hb=(hb*26+b[i])%mod;
if (ha==hb)
l[++nr]=1;
for (i=n+1; i<=m; i++)
{
hb=((hb-(b[i-n]*pp)%mod+mod)*26+b[i])%mod;
if (ha==hb)
l[++nr]=i-n+1;
}
cout<<nr<<"\n";
for (i=1; i<=min (nr,1000); i++)
cout<<l[i]-1<<" ";
return 0;
}