Cod sursa(job #1768513)

Utilizator UPB_CodeJunkiesUPB NAIDEN NICOLICIOIU COTET UPB_CodeJunkies Data 30 septembrie 2016 23:51:03
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

const unsigned long long MOD = 1999999973;

unsigned long long n, p;//n ^ p 
unsigned long long put[35];
//put[i] = n ^ (2 ^ i)

int main() {

	fin >> n >> p;

	put[0] = n % MOD;

	for(int i = 1; i <= 32; ++i)
		put[i] =  put[i - 1] * put[i - 1] % MOD;

	unsigned long long ans = 1;

	for(int i = 0 ; i <= 32; ++i)
		if(p & (1ll << i)) {
			ans =  ans * put[i] % MOD;
		}
	fout << ans << '\n';
	return 0;
}