Submission #19363

#TimeUsernameProblemLanguageResultExecution timeMemory
19363ekfrl0526Α (kriii4_P1)C++14
100 / 100
0 ms1720 KiB
#include<bits/stdc++.h>
using namespace std;

long long x, a;
const long long divs = 1000000007;
vector<long long> as;

void initial() {
	long long ia = a;;
	for (int i = 0; i < 64; i++) {
		if (ia >= divs) ia = ia%divs;
		as.push_back(ia);
		ia *= ia;
	}
}

int main() {
	scanf("%lld %lld", &a, &x);
	initial();
	int c=0;
	long long result = 1;
	while (x > 0) {
		if (x % 2 == 1) {
			result *= as[c];
			result %= divs;
		}
		x /= 2;
		c++;
	}
	cout << result << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...