Cod sursa(job #981072)

Utilizator petrutsxMihaela Petruta Gaman petrutsx Data 6 august 2013 12:54:24
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include<stdio.h>
#define MOD 1999999973

int N, P;
long res;

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

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

	fscanf(pf, "%d %d", &N, &P);
	res = exp(N, P);
	res = res % MOD;

	fprintf(pg, "%ld", res);

	fclose(pf);
	fclose(pg);

	return 0;
}