Cod sursa(job #2492329)
Utilizator | 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;
}