Cod sursa(job #177120)

Utilizator cretuMusina Rares cretu Data 12 aprilie 2008 12:47:45
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <fstream>
#define mod 1999999973
#define sqr(x) ((x)*(x))

using namespace std;

long long Power(long long x, long long n)
{
     if (n == 0) return 1;
     if (n%2 != 0) return (x*Power(sqr(x)%mod, (n-1)/2))%mod;
     return Power(sqr(x)%mod, n/2)%mod;    
}

int main()
{
    long long n, p;
    ifstream fin("lgput.in");
    fin >> n >> p;
    fin.close();
    
    ofstream fout("lgput.out");
    fout << Power(n, p)%mod << "\n";
    fout.close();
    
    return 0;    
}