Cod sursa(job #791596)

Utilizator ericptsStavarache Petru Eric ericpts Data 24 septembrie 2012 17:31:14
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 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) % modulo;
        return ((a*a)%modulo);
    }
    long long unsigned int a = power((p-1)/2) % modulo;
    return ((a*a*n)%modulo);

}

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