Pagini recente » Cod sursa (job #1137678) | Cod sursa (job #2428735) | Cod sursa (job #1876594) | Cod sursa (job #1938392) | Cod sursa (job #2938613)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string s1,s2;
unsigned long long h1,h2,p_n=1;
vector <int> prez;
long long p=31;
int main()
{
cin>>s1>>s2;
if(s1.size() > s2.size())
swap(s1,s2);
for(int i=0; i<s1.size();i++)
{
h1 = h1 *p + s1[i];
h2 = h2 *p + s2[i];
p_n=p_n*p;
}
if(h1 == h2)
prez.push_back(0);
for(int i = s1.size();i<s2.size();i++)
{
h2=h2 * p +s2[i]-p_n*s2[i-s1.size()];
if(h1==h2)
prez.push_back(i-s1.size()+1);
}
cout<<prez.size()<<endl;;
for(int i=0;i<=min(1000,(int)prez.size());i++)
cout<<prez[i]<<' ';
return 0;
}