Cod sursa(job #1768508)

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

using namespace std;

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

const int MOD = 1999999973;

int n, p;//n ^ p 
int put[33];
//put[i] = n ^ (2 ^ i)

int main() {

	fin >> n >> p;

	put[0] = n % MOD;

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

	int ans = 1;

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