Cod sursa(job #1451017)

Utilizator GilgodRobert B Gilgod Data 15 iunie 2015 19:18:42
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>

const int mod = 1999999973;
const char IN[] = "lgput.in", OUT[] = "lgput.out";

using namespace std;

long long N, P;

inline void read_data() {
	fscanf(fopen(IN, "r"), "%d %d", &N, &P);
}

long long pow(long long N, long long P) {
	if (P == 1) return N % mod;
	if (P == 0) return 1;
	if (P % 2 == 0) {
		long long half = pow(N, P / 2) % mod;
		return half * half % mod;
	} 
	long long half = pow(N, P / 2) % mod;
	return half * N % mod * half % mod;
}

int main() {
	read_data();
	long long r = pow(N, P);
	fprintf(fopen(OUT, "w"), "%ld\n", r);
	return 0;
}