Cod sursa(job #1128160)

Utilizator jumper007Raul Butuc jumper007 Data 27 februarie 2014 15:43:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;

const long long MOD = 1999999973;

long long expBySquaring(long long x, long long n) {
	if (n < 0) {
		return (expBySquaring(1/x, -n));
	}
	else if (n == 0) {
		return 1;
	}
	else if (n == 1) {
		return x;
	}
	else if (n % 2 == 0) {
		return (expBySquaring(x*x, n/2));
	}
	else if (n % 2 != 0) {
		return (x * expBySquaring(x*x, (n-1)/2));
	}
}

int main(int argc, char *argv[]) {
	long long nr, power;

	fstream in("lgput.in", ios::in);
	in >> nr >> power;
	in.close();

	fstream out("lgput.out", ios::out);
	out << expBySquaring(nr, power) % MOD;
	out.close();

	return 0;
}