Cod sursa(job #623032)

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

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

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

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

	double n;
	int p;
	scanf("%lf %d\n", &n, &p);
	printf("%.0lf\n", lgput(n, p));

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