Cod sursa(job #798790)

Utilizator ciorile.chioareBogatu Adrian ciorile.chioare Data 17 octombrie 2012 12:14:01
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <cstdio>

#define N_MOD 1999999973

long long lgput(long long n, long long p, long long m) {
  if(!p)
    return 1;
  if(p & 1)
    return (lgput(n * n, p >> 1, m) % m) * (n % m) % m;
  else
    return lgput(n * n, p >> 1, m) % m;
}

int main(void) {

  long long n, p;

  FILE *in = fopen("lgput.in", "r");
  FILE *out = fopen("lgput.out", "w");

  fscanf(in, "%lld%lld", &n, &p);

  fprintf(out, "%lld\n", lgput(n, p, N_MOD));

  return 0;
}