Cod sursa(job #3299633)

Utilizator AxkyroMiron Victor Eusebiu Axkyro Data 8 iunie 2025 19:03:13
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

#define MOD 1999999973


uint64_t mod(uint64_t n, uint64_t p){
  n %= MOD; // pentru n > MOD
  uint64_t rez = 1;
  while(p > 0) {  // trecem prin bitii lui p
    if(p & 1) // daca bit-ul curent e 1 
      rez = (rez * n) % MOD;
    n = (n * n) % MOD;
    p >>= 1;
  }
  return rez;
}

int main(){
  
  uint64_t N, P;

  FILE *input = fopen("lgput.in", "r");
  FILE *output = fopen("lgput.out", "w");

  if(!input || !output){
    fprintf(stderr, "Eroare deschidere fisiere!");
    exit(-1);
  }
  fscanf(input, "%lu%lu", &N, &P);
  fprintf(output, "%lu", mod(N,P)); 
  fclose(input);
  fclose(output);
  return 0;
}