Cod sursa(job #1070512)

Utilizator pitbull007Hurmuzache Ciprian pitbull007 Data 1 ianuarie 2014 13:59:07
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.55 kb
/*
 * putere.c
 *
 *  Created on: Jan 1, 2014
 *      Author: ciprian
 */
#include<stdio.h>
#include<stdlib.h>

const int NR=1999999973;

long putere(long X, long N) {
	if (N < 0)
		return putere(1 / X, -N);
	if (N == 0)
		return 1;
	if (N == 1)
		return X;
	else if (N % 2 == 0)
		return putere(X * X, N / 2);
	return X * putere(X * X, (N - 1) / 2);

}

int main() {

	long long N,P;
	FILE *fin,*fout;
	fin=fopen("lgput.in","r");
	fout=fopen("lgput.out","w");

	fscanf(fin,"%lld",&N);
	fscanf(fin,"%lld",&P);

	fprintf(fout,"%lld",(putere(N,P))%NR);

	return 0;
}