今天我们来聊一聊快速幂模板,明天和大家分享线段树问题的相关题目:
取模运算
(a + b) % p = (a % p + b % p) % p
(a - b) % p = (a % p - b % p ) % p
(a * b) % p = (a % p * b % p) % p
模板
网络上有很多介绍快速幂具体是啥的,这里就是整理一个模板
long long fastPower(long long base, long long power) {
long long result = 1;
while (power > 0) {
if (power & 1) {//此处等价于if(power%2==1)
result = result * base % 1000;
}
power >>= 1;//此处等价于power=power/2
base = (base * base) % 1000;
}
return result;
}
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;
long long fastPower(long long base, long long power) {
long long result = 1;
while (power > 0) {
if (power & 1) {//此处等价于if(power%2==1)
result = result * base % 1000;
}
power >>= 1;//此处等价于power=power/2
base = (base * base) % 1000;
}
return result;
}
int main() {
clock_t start, finish;
//clock_t为CPU时钟计时单元数
long long base, power;
cin >> base >> power;
start = clock();
//clock()函数返回此时CPU时钟计时单元数
cout << fastPower(base, power) << endl;
finish = clock();
//clock()函数返回此时CPU时钟计时单元数
cout << "the time cost is" << double(finish - start) / CLOCKS_PER_SEC;
//finish与start的差值即为程序运行花费的CPU时钟单元数量,再除每秒CPU有多少个时钟单元,即为程序耗时
return 0;
}
近期预告:
线段树、树状数组、状压DP、Trie树、图论
如果大家有什么建议或者要求请后台留言
联系方式:shirandexiaowo@foxmail.com
本文介绍了快速幂运算的模板实现,并提供了一个C++代码示例。通过位操作优化,大大减少了计算时间,同时在主函数中使用了CPU时钟计时来展示算法效率。此外,预告了接下来将探讨线段树、树状数组等数据结构和算法问题。
1263

被折叠的 条评论
为什么被折叠?



