Cod sursa(job #791601)

Utilizator ericptsStavarache Petru Eric ericpts Data 24 septembrie 2012 17:42:42
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <iostream>
#include <fstream>

using namespace std;

long long unsigned int n;

#define modulo 1999999973

long long unsigned int power(int p)
{
    if(p == 1)
        return n;
    if(p == 0)
        return 1;
    if(p%2 == 0)
    {
        long long unsigned int a = power(p/2);
        a = a % modulo;
        return ((a*a)%modulo);
    }
    return ((n * power(p-1)) % modulo);

}

int main()
{
    long long unsigned int p;
    ifstream in("lgput.in");
    in >> n >> p;
    ofstream out("lgput.out");
    cout << power(p) << "\n";
    return 0;
}