算法竞赛进阶指南-23.天才ACM
题目链接
Method : 位运算-二进制拆分
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
LL a, b, p;
LL fast_pow(LL x, LL n) {
LL res = 1LL;
while (n) {
if (n & 1) {
res = res * x % p;
}
x = x * x % p;
n = n >> 1;
}
return res % p;
}
int main() {
cin >> a >> b >> p;
cout << fast_pow(a, b) << endl;
return 0;
}
复杂度分析
时间复杂度, 其中为对n进行二进制拆分的时间复杂度。
空间复杂度。
本博客所有文章均采用 CC BY-NC-SA 4.0 协议 ,禁止商用,转载请注明出处!