Cod sursa(job #2260266)

Utilizator FlaviusFeteanFetean Flavius FlaviusFetean Data 14 octombrie 2018 18:40:10
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include <fstream>

using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");

int main()
{
    long long n, en , rez, p, k = 1, pow = 1;
    const long long m = 1999999973;

    fin >> en >> p; rez = en % m; n = en % m;

    while(pow < p)
    {
        if(pow + k <= p)
        {
            rez = (rez * n) % m;
            pow = pow + k;
            k = k * 2; n = (n * n)%m;
        }
        else k = 1, n = en % m;
    }

    fout << rez;

    return 0;
}