Cod sursa(job #509126)

Utilizator cosmyoPaunel Cosmin cosmyo Data 10 decembrie 2010 15:01:33
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <cstdio>
const unsigned int MOD = 1999999973;
unsigned int n, a;

unsigned int putere(unsigned int n) {
	unsigned int p;

	if(n == 1)
		return a;
	 p = putere(n / 2);
	 if( p <= 30000)
	 	p = p * p ;
	else
		p = ((unsigned long long)p * p) % MOD;

	if( n % 2 == 1)
		p= ((unsigned long long)p * a) % MOD;
	return p;
}

int main() {
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);

		scanf("%u %u", &a, &n);
		
		printf("%u", putere(n));
	return 0;
}