Cod sursa(job #623029)

Utilizator vladbagrinVlad Bagrin vladbagrin Data 18 octombrie 2011 21:41:58
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.46 kb
#include <stdio.h>

#define INPUT "lgput.in"
#define OUTPUT "lgput.out"
#define MAX 1999999973
#define SUCCESS 0

int lgput(int n, int p) {
	if (p == 1) {
		return n;
	} else {
		int r = lgput(n, p / 2);
		r = r * r % MAX;
		if (p % 2)
			r = r * n % MAX;
		return r;
	}
}

int main() {
	freopen(INPUT, "r", stdin);
	freopen(OUTPUT, "w", stdout);

	int n, p;
	scanf("%d %d\n", &n, &p);
	printf("%d\n", lgput(n, p));

	fclose(stdin);
	fclose(stdout);
	return SUCCESS;
}