Pagini recente » Cod sursa (job #322867) | Cod sursa (job #2852209) | Cod sursa (job #2813374) | Cod sursa (job #1495049) | Cod sursa (job #2861419)
#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]%mod+s[i+x.size()]%mod)%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<<" ";
}