Cod sursa(job #641237)

Utilizator alexandrapAlexandra Podiuc alexandrap Data 27 noiembrie 2011 16:52:42
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>

#define q 1999999973

long power(long x ,long n){
	long buff;
	long long result;
	if(n == 0) 
		return 1;
	buff = power(x, n/2)%q;
	
	result = 1;
	result = result * (long long )buff * (long long ) buff;
	result = result % q;
	if(n%2)
		return (long )(((long long)x * result)%q);
	else
		return (long ) result; 
}

int main(){
	long long N, P;
	freopen("lgput.in","r",stdin);
	freopen("lgput.out", "w", stdout);
	scanf("%lld %lld",&N, &P);
	
	long long value = power(N, P);
	printf("%lld\n", value);
	return 0;
}