Cod sursa(job #1726316)
| Utilizator | Data | 7 iulie 2016 19:18:42 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
#define Q 1999999973
using namespace std;
ifstream cin("lgput.in");
ofstream cout("lgput.out");
long long ridicare(long long a, long long b){
long long aux = 1;
if(b<0){
a = 1/a;
b=-b;}
if(b == 0) return 1;
while(b>1){
if(b%2){
aux*=a;
a *=a;
b =(b-1)/2;}
else{
a*=a;
b/=2;}
}
return a*aux;
}
int main() {
long long a,b;
cin>>a>>b;
cout<<(ridicare(a,b)%Q);
}
