Cod sursa(job #1586547)

Utilizator cosmin.vasilache95Vasilache Cosmin Teodor cosmin.vasilache95 Data 1 februarie 2016 13:02:15
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <iostream>
#include <fstream>

#define C 1999999973

int ridicare(int n, int p) {
    if( p == 0)
        return 1;
    if( p == 1)
        return n;

    if ( p%2 == 0)
        return ridicare(n*n,p/2);

    return n*ridicare(n*n, (p-1)/2);
}

using namespace std;

int main() {

    fstream f("lgput.in",ios::in);
    fstream g("lgput.out",ios::out);

    int n,p;
    f >> n;
    f >> p;

    int x = ridicare(n,p);
    g << x%C;
}