Cod sursa(job #996088)
Utilizator | Data | 11 septembrie 2013 00:12:11 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include <cstdio>
#define FIN "lgput.in","r",stdin
#define FOUT "lgput.out","w",stdout
#define MOD 1999999973
using namespace std;
int n,p;
long long putere(int x,int n)
{
if(n<0)return putere(1/x,-n);
if(n==0) return 1;
if(n==1)return x%MOD;
if(n%2==0)return putere(x*x%MOD,n/2);
return putere (x*x%MOD,(n-1/2));
}
int main()
{
freopen(FIN);
freopen(FOUT);
scanf("%d %d",&n,&p);
printf("%lld", putere(n,p)%MOD );
return 0;
}