Cod sursa(job #3249741)

Utilizator ridicheTudor Diaconu ridiche Data 17 octombrie 2024 16:50:59
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#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;
}