乘方 (CSP-J 2022)
一个考查会不会标准的快速幂算法的题目。以下是最容易记住的递归实现。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a,b;
const ll M = 1e9;
ll qpow(ll a, ll b) {
ll ans = 1;
while (b) {
if (b & 1) ans = ans * a;
if (ans > M || a > M) return -1;
a = a * a;
b >>= 1;
}
return ans;
}
int main() {
scanf("%d %d", &a, &b);
printf("%lld\n", qpow(a, b));
return 0;
}