Cod sursa(job #614424)

Utilizator david_raucaRauca Ioan David david_rauca Data 6 octombrie 2011 15:17:57
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<fstream>
using namespace std;
 
#define c 1999999973
 
ifstream fin("lgput.in");
ofstream fout("lgput.out");
 
long long Putere( long long a, long long b );
 
int main()
{
    long long x, y;
     
    fin >> x >> y;
     
    fout << Putere( x, y ) % c;
     
    fin.close();
    fout.close();
     
    return 0;
}
 
long long Putere( long long a, long long b)
{
     if( b == 0 )
         return 1;
    
     if( b % 2 == 0 )
         return Putere( ((long long)a*(long long)a)%c, b/2 ) % c;
     else
         return ((long long)a * (Putere((long long)a*(long long)a, b/2)%c))%c;
}