Cod sursa(job #2285904)

Utilizator cosmin0123Iuga Cosmin cosmin0123 Data 19 noiembrie 2018 14:58:09
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
 
using namespace std;
 
int N, P;
 
const long long R = 1999999973;
 
typedef long long ll;
 
ll logp(long long n, long long p) {
   if (p == 0) {
      return 1;
   }
   if (p == 1) {
      return n % R;
   }
 
   if (p & 1) {
      return ((n % R) * logp(((n % R) * (n % R)) % R, (p-1) / 2)) % R;
   }
 
   return logp(((n % R) * (n % R)) % R, p / 2) % R;
}
 
int main() {
   freopen("lgput.in", "r", stdin);
   freopen("lgput.out", "w", stdout);
 
   scanf("%d %d", &N, &P);
 
   printf("%lld", logp(N, P));
 
   return 0;
}