Cod sursa(job #1749697)

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

using ll = long long;

ll
go(ll n,
   ll p)
{
    ll temp;

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

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

int main()
{
    ll n;
    ll p;

    std::ifstream mama("lgput.in");
    std::ofstream tata("lgput.out");

    mama >> n >> p;

    n %= 1999999973;
    tata << go(n, p);
    return 0;
}