Cod sursa(job #1451014)

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

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

using namespace std;

int N, P;

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

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

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