Cod sursa(job #2653037)

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

using namespace std;

const int MOD = 1999999973;

int lgput(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 0;
}

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;
}