Cod sursa(job #514384)

Utilizator popacamilpopa camil popacamil Data 18 decembrie 2010 16:12:12
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include<stdio.h>
#include<math.h>
using namespace std;
const long int m=1999999973;
long long int N,P,nr;
long long int patrat(long long int a){
	return (a*a)%m;
}
long long int exponent(long long int a, long long int n){
	if(n==0) return 0;
	if(n==1) return a;
	if(n%2) {return a*patrat(exponent(a, (n-1)/2))%m;}
	else{return patrat(exponent(a,n/2))%m;}
}
int main(){
	
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	scanf("%lld%lld",&N,&P);
	nr=exponent(N,P);
    printf("%lld",nr);
	return 0;
}