Cod sursa(job #1182972)

Utilizator abel1090Abel Putovits abel1090 Data 8 mai 2014 09:39:22
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
///LGPUT
#include <fstream>

using namespace std;

unsigned long long power(unsigned long long n, unsigned p) {
    unsigned long long result = 0;

    if(p==0) result = 1 % 1999999973;
    else
        if(p==1) result = n % 1999999973;
        else
            if(p % 2 == 0) result = power(n*n, p/2) % 1999999973;
            else result = n*power(n*n, (p-1)/2) % 1999999973;

    return result;
}

int main() {
    ifstream fin("lgput.in");
    ofstream fout("lgput.out");

    unsigned long long N;
    unsigned P;

    fin >> N >> P;

    fout << power(N, P);
    fout << '\n';

    return 0;
}