Cod sursa(job #3131890)

Utilizator mihai2387648Constantin Mihai mihai2387648 Data 21 mai 2023 20:59:58
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <math.h>

#define M  1999999973

long long unsigned exp_log_rec(long long unsigned n, unsigned p){
 //if(p < 0) return exp_log_rec(1 / n, -p);
 if(p == 0) return 1;
 if(p % 2 == 0) return (exp_log_rec(n*n%M, p/2)%M);
 if(p % 2 == 1) return (n * exp_log_rec(n*n%M, p/2)%M);

 return 0;
}

int main(){
    long long unsigned n;
    long long unsigned p;
    freopen("lgput.in" , "r" , stdin);
    freopen("lgput.out" , "w" , stdout);
    if(scanf("%lld %lld" , &n , &p) == 2){
        printf("%lld" , exp_log_rec(n,p));
        //printf("%ld" , sizeof(unsigned long));
    }
    return 0;
}