Pagini recente » Cod sursa (job #2415407) | Cod sursa (job #1995286) | Cod sursa (job #1142828) | Cod sursa (job #2578884) | Cod sursa (job #2861401)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
#define mod 1009
string s,x;
int sx,ss;
vector <int> v;
int main()
{
cin>>x;
cin>>s;
bool ok=true;
for (int i=0; i<x.size(); i++)
{
sx=(sx+x[i])%mod;
ss=(ss+s[i])%mod;
if (s[i]!=x[i])
ok=false;
}
if (ok==true)
v.push_back(0);
for (int i=1; i<=s.size()-x.size(); i++)
{
ss=(ss-s[i-1]+s[i+x.size()])%mod;
if (ss==sx)
{
ok=true;
for (int j=0; j<x.size(); j++)
if (x[j]!=s[i+j])
{
ok=false;
break;
}
if (ok)
v.push_back(i);
}
}
cout<<v.size()<<'\n';
for (auto i : v)
cout<<i<<" ";
}