Cod sursa(job #721794)

Utilizator morlockRadu Tatomir morlock Data 24 martie 2012 10:21:05
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#define ll long long
#define r 1999999973
using namespace std;

ifstream in("lgput.in");
ofstream out("lgput.out");

ll n, p;

ll putere(ll n, ll p)
{ ll a, b;

    if ( p == 0 ) return 1;
     else
      {
          if ( p % 2 == 0 )
           {
               a = putere(n, p/2);
               return ( a*a ) % r;
           }
          else
           {
               a = putere(n, p/2);
               b = ( a*a ) % r;
               return ( b * n ) % r;
           }
      }
}

int main()
{
    in>>n>>p;

    out<<putere(n,p);

return 0;
}