Cod sursa(job #1452382)

Utilizator Player1Player 1 Player1 Data 20 iunie 2015 17:16:28
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <stdio.h>
#define modulo2 1999999973
long long n,p,result = 1;
 
long long compute(int n, int p){
    if (p == 0) return 1;
    if (p == 1) return n;
 
    if(p % 2 == 0)
        return compute(n*n, p/2) % modulo2 ;
    else {
        return (n * compute(n*n, (p-1)/2)) % modulo2;
    }
 
}
 
int main(){
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);
    scanf("%lld %lld ", &n, &p);
 
    result = compute(n,p) % modulo2;
 
    printf("%lld", result);
    return 0;
}