Cod sursa(job #1082493)

Utilizator lorundlorund lorund Data 14 ianuarie 2014 18:17:56
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#define MOD 1999999973
#include <cstdio>

long long sqr(int N, int P){
    if (P>0){
        if (P%2){
            long long half = sqr(N, P/2)%MOD;

            return ((N*half)%MOD*half)%MOD;
        }
        else{
            long long half = sqr(N, P/2)%MOD;

            return (half*half)%MOD;
        }
    }
    return 1;
}

int main()
{
    int N, P;

    freopen("lgput.in", "r", stdin);
    freopen("lgput.in", "w", stdout);

    scanf("%d %d", &N, &P);
    printf("%I64d", sqr(N%MOD, P));
    return 0;
}