Cod sursa(job #2653044)

Utilizator raikadoCri Lu raikado Data 26 septembrie 2020 18:36:46
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.48 kb
#include <fstream>
#include <iostream>

using namespace std;

const int MOD = 1999999973;

int lgput(long long int N, int P, int M) {
	if (P == 0) return 1;
	else if (P == 1) return N % M;
	else if (P % 2 == 0) return lgput((N*N)%M, P/2, M);
	else if (P % 2 == 1) return (N * lgput((N*N)%M, P/2, M)) % M;
	else throw -1;
}

int main(int argc, char const *argv[])
{
	ifstream fin("lgput.in");
	ofstream fout("lgput.out");

	int N, P;
	fin >> N >> P;

	fout << lgput(N, P, MOD);

	return 0;
}