Cod sursa(job #791593)

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

using namespace std;

int n;

#define modulo 1999999973

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

}

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