Cod sursa(job #514382)

Utilizator popacamilpopa camil popacamil Data 18 decembrie 2010 16:09:22
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<stdio.h>
#include<math.h>
using namespace std;
const long int m=1999999973;
long long int N,P,r,nr;
long long int patrat(int a){
	return (a*a)%m;
}
long long int exponent(int a, 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;
}