Cod sursa(job #1527104)

Utilizator paul-gPaul Grigoras paul-g Data 17 noiembrie 2015 20:32:24
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
// http://www.infoarena.ro/problema/lgput
#include <fstream>
#include <iostream>

using namespace std;

const int M = 1999999973;

long long fast_pow(long long n, long long p) {
  if (p == 1)
    return n;
  if (p % 2 == 0) {
    long long pp = fast_pow(n, p / 2);
    return (pp * pp) % M;
  }
  return (n * fast_pow(n, p - 1)) %  M;
}

int main() {
  ifstream f("lgput.in");
  ofstream g("lgput.out");

  long long n, p;
  while (f >> n) {
    f >> p;
    std::cout << n << " " << p << std::endl;
    g << fast_pow(n, p) << "\n";
  }

  return 0;
}