Cod sursa(job #1925382)

Utilizator dinuandAndrei-Mario Dinu dinuand Data 13 martie 2017 02:41:33
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include <fstream>

#define MOD 1999999973

typedef long long ll_t;

ll_t log_pow(ll_t base, ll_t exponent) {

  ll_t res = base;
  bool is_Odd = false;
  if (exponent & 1) is_Odd = true;
  for (; exponent > 1; exponent >>= 1) {
    res = (res * res) % MOD;
  }

  if (is_Odd) res = (res * base) % MOD;
  return res;
}


int main() {

  std::ifstream in ("lgput.in");
  std::ofstream out ("lgput.out");

  ll_t N, P;
  in >> N >> P;

  ll_t result = log_pow(N, P);
  out << result << '\n';

  in.close();
  out.close();

  return 0;
}