Cod sursa(job #1789731)

Utilizator deividFlorentin Dumitru deivid Data 27 octombrie 2016 14:56:45
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <stdio.h>

long long lgpow(long long a, long long b, long long mod) {
  long long s = 1, p = a;
  b %= (mod - 1);

  while (b) {
    if (b & 1) {
      s = (s * p) % mod;
    }
    p = (p * p) % mod;
    b >>= 1;
  }

  return s;
}

int main() {
  freopen("lgput.in", "r", stdin);
  freopen("lgput.out", "w", stdout);

  long long a, b;
  scanf("%lld %lld", &a, &b);
  printf("%lld\n", lgpow(a, b, 1999999973));

  return 0;
}