Cod sursa(job #525844)

Utilizator icepowdahTudor Didilescu icepowdah Data 26 ianuarie 2011 15:45:21
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <fstream>
using namespace std;

#define BIG_NUMBER 1999999973

int main(void)
{
  int n, p;

  ifstream f("lgput.in");
  ofstream g("lgout.out");

  f >> n;
  f >> p;

  long long r = 1, c = n;
  while (p > 0)
  {
    if (p & 1)
    {
      r = (r * c) % BIG_NUMBER;
      p ^= 1;
    }
    else 
    {      
      c = (c*c) % BIG_NUMBER;
      p >>= 1;
    }
  }

  g << r;

  f.close();
  g.close();
}