Cod sursa(job #1454015)

Utilizator petru.cehanCehan Petru petru.cehan Data 25 iunie 2015 11:56:58
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#define modul 1999999973

using namespace std;
ifstream fin ("lgput.in");
ofstream fout ("lgput.out");

long int FastExp ( long int N , long int P )
{
    unsigned long int i ;
    long int bit ; long long  copie ;
    copie = N ;
    long int solutie = 1 ;
    for ( i = 0 ; ( bit = 1 << i ) <= P ; ++i )  // luam toti bitii lui P in ordine ( de la dreapta spre stanga )
        {
            if ( bit & P )  //verific daca bitul e 1 si exponentiem inca o data ;
                      solutie = (solutie * copie ) % modul ;
        copie = ( copie * copie ) % modul ;
        cout<<copie<<endl;

        }
    return solutie ;
}
int main ()
{
  long int N , P;
  fin>>N>>P;
  long int exp = FastExp (N,P) ;
  fout << exp;
  return 0;
}