Cod sursa(job #3263528)

Utilizator urweakurweak urweak Data 14 decembrie 2024 18:36:08
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 % M;
  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);

}