Pagini recente » Cod sursa (job #19799) | Istoria paginii runda/1313/clasament | Cod sursa (job #714627) | Cod sursa (job #1833626) | Cod sursa (job #3249741)
#include <fstream>
#include <string>
using namespace std;
ifstream in;
ofstream out;
string a, b;
int putere(int x, int p) // furat de la https://www.infoarena.ro/job_detail/3216962?action=view-source
{
if (p == 1)
return x;
if (p == 0)
return 1;
int r = 1;
r *= putere(x, p/2);
r = 1ll * r * r % mod;
if (p%2)
r = 1ll * r * x % mod;
return r;
}
int inversmodular(int x)
{
return putere(x, mod-2);
}
int base = 463, mod = 83837771, bazalaputerea[2000005], sumapartiala[2000005], hasha = 0;
int main()
{
in.open("strmatch.in");
out.open("strmatch.out");
bazalaputerea[0] = 1;
for (int i = 1; i < 2000005; i++)
{
bazalaputerea[i] = (bazalaputerea[i-1] * base) % mod;
}
in >> a >> b;
for (int i = 0; i < a.size(); i++)
{
hasha += a[i] * bazalaputerea[i];
hasha %= mod;
}
sumapartiala[0] = b[0];
for (int i = 1; i < b.size(); i++)
{
sumapartiala[i] = (sumapartiala[i-1] + (bazalaputerea[i] * b[i])) % mod;
}
return 0;
}