Cod sursa(job #1131379)

Utilizator DevilOnFieldTudor Horia Niculescu DevilOnField Data 28 februarie 2014 19:45:35
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>

long long x, n, p, m;

long long put(long long n, long long p) {
  if(p == 1) {
      return n;
  }
  else {
      if(p % 2 == 0) {
          return put((n * n) % m, p / 2) % m;
      }
      else {
          return (put((n * n) % m, p / 2) * n) % m;
      }
  }
}

int main () {

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

  fscanf(in, "%d%d", &n, &p);
  m = 1999999973;
  x = put(n, p);
  fprintf(out, "%lld\n", x);

  fclose(in);
  fclose(out);
  return 0;
}