Cod sursa(job #2663437)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 26 octombrie 2020 13:16:18
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <stdlib.h>

#define MOD 1999999973

int put(int a, unsigned int p){
  int valret;
  if(0 < p){
    valret = put(a, p / 2);
    if((p % 2) == 1){
      valret = ((long long)((long long)a * valret) % MOD * valret) % MOD;
    }else{
      valret = ((long long)valret * valret) % MOD;
    }
  }else{
    valret = 1;
  }
  return valret;
}

int main()
{
    FILE *fin, *fout;
    unsigned int n, p;
    fin=fopen("lgput.in", "r");
    fscanf(fin, "%u%u", &n, &p);
    fclose(fin);
    fout=fopen("lgput.out", "w");
    fprintf(fout, "%d", put(n % MOD, p));
    fclose(fout);
    return 0;
}