Cod sursa(job #2884007)

Utilizator FredyLup Lucia Fredy Data 2 aprilie 2022 10:35:05
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define MOD 1999999973

int lgput(unsigned int n, unsigned int p){
    int rez = 1;
    if(p == 0)
        return 1;
    while(p){
        ///daca bitul curent (ultimul bit) e 1, inmultim in rezultat
        if(p & 1)
            rez = ((long long)rez * n) % MOD; /// rez = (1LL * rez * n) % MOD

        ///inmultim in n
        n = ((long long)n * n) % MOD;

        p>>=1;
    }
    return rez;
}

int main()
{
    unsigned int n, p;
    fin>>n>>p;
    fout<<lgput(n, p);

    fin.close();
    fout.close();
    return 0;
}