Cod sursa(job #3240418)

Utilizator AndreiNicolaescuEric Paturan AndreiNicolaescu Data 14 august 2024 19:39:03
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>

using namespace std;
ifstream cin("lgput.in");
ofstream cout("lgput.out");
const int MOD = 1999999973;
long long fast_exp_rec(int a, int b)
{
    if(b == 0)
        return 1;
    else
    {
        long long p = fast_exp_rec(a, b/2) % MOD;
        if(b % 2)
            return (((p*p)%MOD)*a)%MOD;
        else
            return ((p*p)%MOD);
    }
}
long long fast_exp_itr(int a, int b)
{
    long long ans = 1;
    while(b)
    {
        if(b % 2)
            ans = (ans * a) % MOD;
        a = (a * a) % MOD;
        b/=2;
    }
    return ans;
}
int main()
{
    long long a, b;
    cin >> a >> b;
    cout << fast_exp_itr(a, b);
    return 0;
}