Cod sursa(job #1524294)

Utilizator StefanMudragMudrag Stefan StefanMudrag Data 13 noiembrie 2015 20:45:11
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<iostream>
#include<fstream>
#define MOD 1999999973


using namespace std;

long long Putere_in_Log2(long long n , long long p ) ;

int main()
{
    long long n , p , solutie ;

    ifstream fin("lgput.in") ;

    ofstream fout("lgput.out") ;

    fin>>n>>p;

    solutie = Putere_in_Log2 ( n , p ) ;


    fout<<solutie ;

    fin.close() ;

    fout.close() ;

    return 0 ;


}

long long Putere_in_Log2(long long n , long long p )
{


    if(p==1) return n % MOD;

    if(p&1)

   {


      return (n * Putere_in_Log2((n*n)%MOD , ( p - 1 ) / 2 ) ) % MOD ;

   }

   n = ( n * n ) % MOD ;

   return Putere_in_Log2 ( n , p / 2 ) % MOD;


}