Cod sursa(job #1749696)

Utilizator meriniucrMeriniuc Razvan- Dumitru meriniucr Data 28 august 2016 16:08:08
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 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::ifstream mama("lgput.in");
    std::ofstream tata("lgput.out");

    mama >> n >> p;
    tata << go(n, p);
    return 0;
}