Cod sursa(job #1691198)

Utilizator andreilucaLuca Andrei andreiluca Data 17 aprilie 2016 11:42:52
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

FILE *in, *out;

int put_log(int x, int p);

int main(int argc,const char * argv[])
{
	in = fopen("lgput.in", "r");
	out = fopen("lgput.out", "w");


	int x, p;

	fscanf(in,"%d%d",&x,&p);
	fprintf(out, "%d", put_log(x, p) % 1999999973);
	return 0;
}
int put_log(int x, int p)
{
	if (p == 0)
		return 1;
	if (p == 1)
		return x;
	if (p % 2 == 0)
		return put_log(x*x, p / 2);
	
	return x*put_log(x*x, p / 2);
}