Pagini recente » Cod sursa (job #2806392) | Cod sursa (job #1163713) | Cod sursa (job #1782861) | Cod sursa (job #483554) | Cod sursa (job #1402106)
#include <fstream>
#include <string>
#include <vector>
#define MOD 666013
#define P 73
using namespace std;
ifstream fin ("strmatch.in");
ofstream fout ("strmatch.out");
string A, B;
vector < int > V;
int h, h1, sol, PP = 1;
int main()
{
fin >> A >> B;
for (int i = 0; i < A.size(); i++) {
h = (h * P + A[i]) % MOD;
if (i != 0) PP = (PP * P) % MOD;
}
for (int i = 0; i < A.size(); i++) {
h1 = (h1 * P + B[i]) % MOD;
}
if (h == h1) sol++, V.push_back(0);
for (int i = A.size(); i < B.size(); i++)
{
h1 = (((h1 - (PP * B[i - A.size()])) % MOD + MOD) * P + B[i]) % MOD;
if (h == h1) {
sol++;
V.push_back(i - A.size() + 1);
}
}
fout << sol << '\n';
for (int i = 0; i < V.size() && i < 1000; i++) {
fout << V[i] << ' ';
}
fout.close();
return 0;
}