Cod sursa(job #1602710)

Utilizator andreibotilaBotila Andrei andreibotila Data 16 februarie 2016 21:37:39
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

int exprapid(int N, int P){
	if(P < 0) return exprapid(1 / N, -P);
	else if(P == 0) return 1;
	else if(P == 1) return N;
	else if(N % 2 == 0) return exprapid(N * N, P / 2);
	else if(N % 2 == 1) return N * exprapid(N * N, (P - 1) / 2);
	return N;
}

int main(){
	FILE *in, *out;
	in = fopen("lgput.in", "r");
	out = fopen("lgput.out", "w");

	int rest = 0, result, N, P;
	fscanf(in, "%d %d", &N, &P);

	result = exprapid(N, P);
	rest = result % 1999999973;

	fprintf(out, "%d\n", rest);
	fclose(in);
	fclose(out);
	return 0;
}