Cod sursa(job #3134462)

Utilizator constantin_catalinaConstantin Catalina-Viviana constantin_catalina Data 29 mai 2023 01:28:41
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>

#define REST 1999999973

long long putere(long long N, long long P)
{
  long long sol = 1;
  N = N % REST;
  while(P > 0)
    {
      if(P % 2 == 1)
	{
	  sol = (sol * N) % REST;
	}
      N = (N * N) % REST;
      P = P / 2;
    }
  return sol;
}

int main(void)

{
  long long N, P;
  FILE *fin;
  FILE *fout;

  if((fin = fopen("lgput.in","r"))==NULL)
    {
      printf("Eroare deschidere fisier\n");
      exit(-1);
    }

  if((fout = fopen("lgput.out","w"))==NULL)
    {
      printf("Eroare deschidere fisier\n");
      exit(-1);
    }

  fscanf(fin,"%lld %lld", &N, &P);
  
  fprintf(fout,"%lld\n", putere(N,P));

  fclose(fin);
  fclose(fout);

  return 0;

}