Cod sursa(job #1008745)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 11 octombrie 2013 19:27:20
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <iostream>
#include <fstream>
#define modulo 1999999973
#define unint unsigned int

using namespace std;

ifstream in("lgput.in");
ofstream out("lgput.out");

unsigned int n,p;

int putere(unint baza, unint exp){
    if (exp==1) return n;
    else {
        int half=putere(n, int(exp/2));
        
        if (exp % 2 == 0) return (half*half)%modulo;
        else return (half*half*baza)%modulo;
    }
}

int main(){
    in >> n >> p;

    out << putere(n, p) << "\n";
    
    return 0;
}