Cod sursa(job #710545)

Utilizator sana1987Laurentiu Dascalu sana1987 Data 9 martie 2012 22:01:47
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <string.h>

#define MOD 1999999973

long mypowrec(long N, long P) {
    if (P <= 0)
        return 1;
    if (P == 1)
        return N % MOD;

    if (P % 2) {
        long aux = mypowrec(N, (P - 1) / 2) % MOD;
        return (P * aux * aux * 1LL) % MOD;
    }
    long aux = mypowrec(N, P / 2) % MOD;
    return (aux * aux * 1LL) % MOD;
}

int main(int argc, char **argv) {
    long N, P;
    freopen("lgput.in", "r", stdin);
    //freopen("lgput.out", "w", stdout);
    
    scanf("%ld %ld", &N, &P);
    printf("%ld %ld\n", N, P);
    printf("%ld", mypowrec(N, P));

	return 0;
}