Cod sursa(job #1749695)

Utilizator meriniucrMeriniuc Razvan- Dumitru meriniucr Data 28 august 2016 16:07:17
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.41 kb
#include <bits/stdc++.h>

using ll = long long;

ll
go(ll n,
   ll p)
{
    if (1 == p)
    {
        return n;
    }
    if (2 == p)
    {
        return (n * n) % 1999999973;
    }

    if (p & 1)
    {
        return n * (go(go(n, p / 2), 2)) % 1999999973; 
    }
    
    return go(go(n, p / 2), 2) % 1999999973;
}

int main()
{
    ll n;
    ll p;

    std::cin >> n >> p;
    std::cout << go(n, p);
    return 0;
}