欧几里得算法
求两个整数的最大公约数,时间复杂度O(logn)
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
快速幂算法
快速求a的b次方
typedef long long ll;
ll quick_pow(const ll a, const ll b) {
ll result = 1, ans = a;
while (b) {
// 如果b是奇数,结果乘一次底数
if (b & 1) result *= ans;
// 如果b是偶数,把底数相乘,即底数算平方
ans *= ans;
// 指数减半,即指数除2
b >>= 1;
}
return result;
}