Cod sursa(job #681831)

Utilizator ioana26Ioana Andronescu ioana26 Data 17 februarie 2012 21:17:48
Problema Ridicare la putere in timp logaritmic Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.56 kb
#include <stdio.h>
#include <stdlib.h>

#define numar	1999999973

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

int main () {

	FILE *f_in = fopen("lgput.in", "r");
	FILE *f_out = fopen("lgput.out", "w");
	int N, P;
	
	fscanf(f_in, "%d %d", &N, &P);
	fprintf(f_out, "%lld", putere(N, P));

	fclose(f_in);
	fclose(f_out);

	return 0;
}