Pagini recente » Cod sursa (job #190302) | Cod sursa (job #2146674) | Cod sursa (job #222820) | Cod sursa (job #837423) | Cod sursa (job #2963780)
#include <fstream>
#define mod 1000000009
using namespace std;
int v[2000005];
int main()
{
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
string a,b;
long long nrA=0,nrB=0,cnt=0,put=1;
cin>>a>>b;
for(int i=0;i<a.size();i++)
{
nrA=(1LL*nrA*128+a[i])%mod;
nrB=(1LL*nrB*128+b[i])%mod;
put=(1LL*put*128)%mod;
}
if(nrA==nrB)
{
cnt++;
v[cnt]=1;
}
for(int i=a.size();i<b.size();i++)
{
nrB=(long long)((1LL*nrB*128+b[i])%mod);
nrB=(long long)((nrB-b[i-a.size()]*put)%mod);
if(nrB<0)
nrB+=mod;
if(nrB==nrA)
{
cnt++;
v[cnt]=i-a.size()+1;
}
}
cout<<cnt<<'\n';
for(int i=1;i<=min(cnt,1000LL);i++)
cout<<v[i]<<" ";
return 0;
}