比赛 CSP2022普及组 评测结果 AAAAAAAAAA
题目名称 乘方 最终得分 100
用户昵称 该账号已注销 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-10-29 14:53:23
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
long long a, b;
long long maxn = 1000000000;
bool k = 0;

long long pow(long long x, long long y) {
	if (y == 1)
		return x;
	if (y == 0)
		return 1;
	if (y % 2 == 0) {
		long long p = pow(x, y / 2);
		if (k == 1)
			return 0;
		if (p * p > maxn) {
			k = 1;
			return 0;
		}
		return p * p;
	}
	if (y % 2 == 1) {
		long long p = pow(x, y - 1);
		if (k == 1)
			return 0;
		if (p * x > maxn) {
			k = 1;
			return 0;
		}
		return p * x;
	}
	return 0;
}

int main() {
	freopen("csp2022pj_pow.in", "r", stdin);
	freopen("csp2022pj_pow.out", "w", stdout);
	cin >> a >> b;
	if (a > maxn) {
		cout << -1 << endl;
		return 0;
	}
	long long ans = pow(a, b);
	if (k == 1) {
		cout << -1 << endl;
		return 0;
	} else {
		cout << ans << endl;
	}
	return 0;
}