Cod sursa(job #1691199)

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

FILE *in, *out;

long long put_log(long long x, long long p);

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


	long long x, p;

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