Cod sursa(job #2240935)

Utilizator gabrielxCojocaru Gabriel-Codrin gabrielx Data 14 septembrie 2018 15:25:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>

#define MODULO_VAL 1999999973

using namespace std;

ifstream cin("lgput.in");
ofstream cout("lgput.out");

unsigned long long N, P;
unsigned long long f(unsigned long long N, unsigned long long P) {
    if (P == 0) return 1;
    if (P == 1) return (N % MODULO_VAL);
        
    if (P % 2 == 0) {
        return ((f(N, P / 2) % MODULO_VAL) * (f(N, P / 2) % MODULO_VAL) % MODULO_VAL);
    } else {
        return (((f(N, P / 2) % MODULO_VAL) * (f(N, P / 2) % MODULO_VAL) % MODULO_VAL) * (N % MODULO_VAL) % MODULO_VAL);
    }
    
}

int main() {
	cin >> N >> P;
	cout << f(N, P);
	return 0;
}