Pagini recente » Cod sursa (job #2937485) | Cod sursa (job #3138156) | Cod sursa (job #395581) | Cod sursa (job #483296) | Cod sursa (job #2723075)
#include <bits/stdc++.h>
using namespace std;
ifstream in("fisier.in");
ofstream out("fisier.out");
long long cod[2000000];
long long X = 998757677, Y = 921314429, val = 0, putere = 1;
string a, b;
int main()
{
in >> a >> b;
for(int i = 0; i < a.size(); i++)
{
val = (val * X + a[i]) % Y;
putere = (putere * X) % Y;
}
cod[0] = b[0];
for(int i = 1; i < b.size(); i++)
cod[i] = (cod[i-1] * X + b[i]) % Y;
int nrSol = 0;
queue <int> sol;
for(int i = a.size(); i < b.size(); i++)
if((cod[i] - cod[i-a.size()] * putere + Y*Y) % Y == val)
{
nrSol++;
sol.push(i - a.size() + 1);
}
out << nrSol << '\n';
for(int i = 1; i <= min(nrSol, 1000); i++)
{
out << sol.front() << ' ';
sol.pop();
}
return 0;
}