Cod sursa(job #2645779)

Utilizator masterXbotmasterX masterX Data 29 august 2020 16:09:28
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
// link: https://infoarena.ro/problema/lgput //
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

const string problem = "lgput";
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");

#define ll long long
const ll M = 1999999973;
ll N, P;

ll ridicare(ll numar, ll putere)
{
	if (putere == 1)
		return numar;
	if (putere == 0)
		return 1;

	if (putere % 2 == 0)
		return ridicare((numar * numar) % M, putere / 2) % M;
	else
		return numar * ridicare((numar * numar) % M, putere / 2) % M;
}
int main()
{
	fin >> N >> P;
	fout << ridicare(N, P);
}