Cod sursa(job #1070523)

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

const int NR=1999999973;

int putere(int X, int 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() {

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

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

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

	return 0;
}