Cod sursa(job #2257247)

Utilizator AxellbenCretu Alexandru Axellben Data 9 octombrie 2018 20:56:48
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

const int MOD = 1999999973;

int RidicareLogaritmica(int N, int P) {
  if (P == 0) {
    return 1;
  } else if (P % 2 == 0) {
    return (1LL * RidicareLogaritmica(N, P / 2) *
            RidicareLogaritmica(N, P / 2)) %
           MOD;
  } else {
    return (1LL * N * RidicareLogaritmica(N, P / 2) *
            RidicareLogaritmica(N, P / 2)) %
           MOD;
  }
}

int main() {
  int N, P;
  fin >> N >> P;
  fout << RidicareLogaritmica(N, P);
}