Cod sursa(job #3263529)

Utilizator urweakurweak urweak Data 14 decembrie 2024 18:37:18
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <math.h>
#include <fstream>

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

size_t M = 1999999973;

void fpow(size_t N, size_t P){
  size_t result = 1;
  size_t aux = N;
  while(P > 0){
    if(P % 2 == 1){
      result *= (aux % M) ;
      P--;
      continue;
    }
    P/=2;
    aux*=(aux % M);
  }
  out  << result % M << std::endl;
}

int main(){
  if(!in.is_open()) throw std::runtime_error("File is not opened");
  if(!out.is_open()) throw std::runtime_error("File is not opened");

  size_t N, P;
  
  in >> N >> P;

  fpow(N, P);

}