Cod sursa(job #1363530)

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

#define a 1999999973

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

	if (pow == 1)
		return number;

	int tmp = pow / 2;

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

	return power((long long) number * number, 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) % a);

	return 0;
}