Cod sursa(job #2465935)

Utilizator rusu.ralucaRusu Raluca rusu.raluca Data 1 octombrie 2019 08:27:19
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.41 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");
	
const int n_max = 10001;
const int m = 1999999973;

int n, p;
long long sol=1;

int main(){
	fin >> n >> p;
	long long a = n;
	for (int i = 0; (1<<i) <= p; ++ i){
		if ( ((1<<i) & p) > 0)
			sol= (sol * a) % m;
		a=(a * a) % m;
	} 
	fout << sol;
}