Cod sursa(job #491113)

Utilizator iraIrina Stanescu ira Data 9 octombrie 2010 19:06:51
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>


#define infile "lgput.in"
#define outfile "lgput.out"

#define MAGIC 1999999973

FILE *fin, *fout;

//n^p
long long mypow(long long n, long long p) {

	long long aux;
	if (p == 0) return 1;
	if (p == 1) return n;

	if (p % 2 == 0) {
		aux = mypow(n, p/2) % MAGIC;
		aux = (aux * aux) % MAGIC;
		return aux;
	}

	aux = mypow(n, (p - 1)/2) % MAGIC;
	aux = (aux * aux) % MAGIC; 
	return (aux * n) % MAGIC;
}

long long main() {
	long long n, p;
	fin = freopen(infile, "r", stdin);
	fout = freopen(outfile, "w", stdout);

	scanf("%lld%lld", &n, &p);
	printf("%lld\n", mypow(n,p) % MAGIC);

	return 0;
}