Cod sursa(job #583442)

Utilizator truenighttruenight truenight Data 20 aprilie 2011 11:34:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>

#define MOD 1999999973
#define IN "lgput.in"
#define OUT "lgput.out"

static long long lgput(long long, long long);

int main(void) {

    long long n, e;

    (void) freopen(IN, "r", stdin);
    (void) freopen(OUT, "w", stdout);

    (void) scanf("%lld %lld", &n, &e);

    printf("%lld\n", lgput(n, e));
    return 0;
}

long long lgput(long long n, long long e) {

    long long x;

    if(e == 1) return n;

    x = lgput(n, e / 2);
    x = (x * x) % MOD;
    if(e % 2) x = (x * n) % MOD;

    return x;
}