Cod sursa(job #192874)

Utilizator stefysStefan stefys Data 31 mai 2008 23:01:05
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>
#include <stdlib.h>

#define MOD 1999999973

int lgpow (int base, int exp)
{
	int ret = 1;
	while (exp) {
		if (exp & 1) {
			--exp;
			ret *= base;
		}
		base = (base*base)%MOD;
		exp /= 2;
	}
	return ret%MOD;
}

int main (void)
{
	FILE *in, *out;
	int base, exp;
	
	in  = fopen("lgput.in", "r");
	out = fopen("lgput.out", "w+");
	
	if (!in || !out) { printf("WTF?"); exit(-1); }
	
	fscanf(in, "%d %d", &base, &exp);
	fprintf(out, "%d\n", lgpow(base, exp));
	
	fclose(in); fclose(out);
}