Cod sursa(job #2305220)

Utilizator st_marianStoica Marian st_marian Data 19 decembrie 2018 17:19:17
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
int modulo=1999999973;
int x, y;
int p;
int ridicare_timp_logaritmic(int x, int y);
int main()
{
    fin>>x>>y;
    fout<<ridicare_timp_logaritmic(x, y)<<'\n';
    return 0;
}
int ridicare_timp_logaritmic(int x, int y)
{
    int p=1;
    while(y>0)
    {
        ///fout<<p<<" - "<<x<<'\n';
        if(y%2)
        {
            p=(p*x)%modulo;
            y--;
        }
        x=(1LL*x*x%modulo)%modulo;
        y/=2;
    }
    return p;
}