#include <bits/stdc++.h>
using namespace std;
/*
快速幂最佳优化模板
参数1:底数
参数2: 指数
*/
long long fastPower(long long base, long long power)
{
long long result = 1; //结果
while(power > 0) //指数 ,如果指数不等于 0 继续执行
{
if(power&1) //使用位运算判断奇偶可以缩短时间
{
result = result * base %1000 ; // %1000 表示取最后三位数
}
power >>= 1; //将二进制的 power向右平移一位,达到 %2 的目的,缩短时间
base = base*base %1000;
}
return result;
}
int main(int argc, char** argv) {
clock_t t1,t2;
t1 = clock();
cout << fastPower(2,1000000000) << endl;
t2 = clock();
cout << "时间:" << double(t2-t1)/CLOCKS_PER_SEC;
return 0;
}
快速幂模板(带注释)
最新推荐文章于 2024-02-28 23:26:57 发布