Cod sursa(job #3263531)

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

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

unsigned int M = 1999999973;

void fpow(unsigned int N, unsigned int P){
  unsigned int result = 1;
  unsigned int aux = N % M;
  while(P > 0){
    if(P % 2 == 1){
      result = (result % M) * (aux % M) ;
      P--;
      continue;
    }
    P/=2;
    aux = (aux % M) * (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");

  unsigned int N, P;
  
  in >> N >> P;

  fpow(N, P);

}