Cod sursa(job #2492329)

Utilizator nicu_ducalNicu Ducal nicu_ducal Data 14 noiembrie 2019 16:04:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <bits/stdc++.h>
using namespace std;

int ridicare_la_putere(int N, int P){
    if (P < 0) {
        return ridicare_la_putere(1/N, -P);
    }
    else if (P == 0){
        return 1;
    }
    else if (P == 1){
        return N;
    }
    else if (P % 2 == 0){
        return ridicare_la_putere(N*N, P/2);
    }
    else if (P % 2 == 1){
        return N*ridicare_la_putere(N*N, (P-1)/2);
    }
}

int main(){

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

int N, P;
cin >> N >> P;


cout << ridicare_la_putere(N,P)%1999999973;

return 0;
}