Cod sursa(job #1363509)

Utilizator muraru_georgeMuraru George Cristian 323CB muraru_george Data 27 februarie 2015 00:22:16
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>

#define a 1999999973

int power(int number, int pow)
{
	if (pow == 0)
		return 1;

	if (pow == 1)
		return number % a;

	int tmp = pow / 2;

	if (pow % 2 == 1) {
		int rez = power((number * number), tmp);
		return  (number * ((rez * rez) % a));
	}

	return power((number * number) % a, tmp);
}

int main(void)
{
	FILE *f_in = fopen("lgput.in", "rt");
	FILE *f_out = fopen("lgput.out", "wt");
	int num, pow;

	fscanf(f_in, "%d %d", &num, &pow);
	fprintf(f_out, "%d", power(num, pow));

	return 0;
}