Cod sursa(job #664801)

Utilizator david_raucaRauca Ioan David david_rauca Data 20 ianuarie 2012 20:35:46
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
using namespace std;

#define mod 1999999973

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

long long putere( long long n, long long p );

int main()
{
    long long n, p;
    fin >> n >> p;
    
    fout << putere( n, p );
    
    fin.close();
    fout.close();
    
    return 0;
}

long long putere( long long n, long long p )
{
     if( p == 0 )
     {
         return 1;
     }
     
     if( p % 2 == 0 )
         return (putere( (n*n)%mod, p/2 ))%mod;
     else
         return (n * putere( (n*n)%mod, p/2))%mod;
}