Pagini recente » Cod sursa (job #2864688) | Cod sursa (job #2870173) | Cod sursa (job #2643408) | Cod sursa (job #2160935) | Cod sursa (job #2789453)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
#define mod 100007
int lna,lnb,cnt,starts[1005];
unsigned long long cod;
string a,b;
int main()
{
fin>>a;
fin>>b;
lna=a.size();
unsigned long long pow=1;
for(int i=lna-1;i>=0;--i)
{
cod=(cod+(a[i]-'0')*pow)%mod;
pow*=52;
}
lnb=b.size();
for(int i=0;i<lnb-lna+1;++i)
{
unsigned long long codb=0;
unsigned long long pow=1;
for(int j=i+lna-1;j>=i;--j)
{
codb=(codb+(b[j]-'0')*pow)%mod;
pow*=52;
}
if(cod==codb)
{
++cnt;
if(cnt<=1000)
starts[cnt]=i;
}
/*{bool ok=true;
for(int j=0;j<lna;++j)
if(a[j]!=b[i+j])ok=false;
if(ok)
{
++cnt;
if(cnt<=1000)
starts[cnt]=i;
}
}*/
}
fout << cnt << '\n';
for(int i=1;i<=min(cnt,1000);++i)
fout << starts[i] << ' ';
fout<<'\n';
return 0;
}