Cod sursa(job #1753868)
| Utilizator | Data | 7 septembrie 2016 11:37:33 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include<iostream>
#include<math.h>
using namespace std;
int t=1999999973;
long long exp(long long x,long long n){
if(n<0)return exp(1/x,-n);
else if(n==0)return 1;
else if(n==1)return x;
else if(n%2==0)return exp(x*x,n/2);
else return x*exp(x*x,(n-1)/2);
}
int main(){
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
int n,p,y=1;
cin>>n>>p;
cout<<exp(n,p)%t;
}
