Cod sursa(job #641230)

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

#define q 1999999973

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

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