Cod sursa(job #509856)

Utilizator liviu12345Stoica Liviu liviu12345 Data 11 decembrie 2010 21:10:37
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <iostream>

using namespace std ;

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

const long MODULO = 1999999973 ;

unsigned long long exp ( unsigned long long Baza , unsigned long long Exponent ) ;

int main ( )
{
  unsigned long long n , p ;
  f >> n >> p ;
  g << exp ( n , p ) ;
}

unsigned long long exp ( unsigned long long Baza , unsigned long long Exponent )
{
  unsigned long long deReturnat = 1 , bit = 1 ;
  while ( Exponent )
  {
    if ( Exponent & bit )
    {
      deReturnat *= Baza ;
      deReturnat %= MODULO ;
    }
    Baza *= Baza ;
    Exponent >>= 1 ;
    Baza %= MODULO ;
  }
  return deReturnat ;
}