Cod sursa(job #1798287)

Utilizator BourucLiviuBouruc Petru Liviu BourucLiviu Data 5 noiembrie 2016 09:17:16
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>

#define MOD 1999999973

using namespace std;

long long pexp(long long x, long long n)
{
    long long p = 1;
    while(n > 0)
    {
        if(n % 2 == 1)
        {
            p = (p * x) % MOD;
            n--;
        }
        x = (x * x) % MOD;
        n /= 2;
    }
    return p;
}

int main()
{
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);
    long long n, p;
    scanf("%lld %lld", &n, &p);
    fclose(stdin);
    printf("%lld", pexp(n, p));
    fclose(stdout);
    return 0;
}