Cod sursa(job #537015)

Utilizator slycerdan dragomir slycer Data 19 februarie 2011 21:17:57
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>

long long MOD = 1999999973;
long pow_(long long a, long long b) {
	long long ret;

	if (b == 0) {
		return 1;
	}

	if (b == 1) {
		return a;
	}

	if (b % 2 == 0) {
		ret =  pow_(a, b / 2);
		ret = ret*ret; 
	} else {
		ret =  pow_(a, (b - 1) / 2);
		ret = ret * ret; 
		ret = ret % MOD; 
		ret = ret * a; 
	}
	return ret % MOD;
}

int main() {

	FILE * in = fopen("lgput.in", "r");
	FILE * out = fopen("lgput.out", "w");
	//printf("size of %ld\n",sizeof(long long));
	long long n;
	long long p;
	fscanf(in, "%lld%lld", &n, &p);
	//printf("%ld", pow_(n, p));
	fprintf(out, "%lld", pow_(n, p));

	fclose(out);
	fclose(in);
	return 0;
}