来嘛~整理一下快速幂
我才发现我虽然学了这么长时间的OI,我居然连快速幂是什么都不知道。
以至于当自己卡在“完美数”那道题,而后去看题解的时候。
我发现了一个我虽然听过无数次但是从来不会写的算法。
快速幂
于是我飞快地baidu了一下。
找到了一篇炒鸡棒哒博客。
不得不说那篇博客写的非常的浅显易懂。
于是乎,
我只用了不到10分钟就完全搞懂了快速幂。
正好嘛~过来写个博客扩充一下自己的博客。
首先先描述一下这个快速幂算法的思路:
我们都知道,如果想要求一个幂,
我们最普通的代码需要的是循环指数次乘积操作。
而快速幂算法能够大大优化时间的复杂度。
我们可以将所要求的指数减半,分成两个底数的平方的指数的一般次幂。
但是,看到这里显然有的人就会提出疑问:
如果我的指数是奇数怎么解决呢?
显然-1即可。
long long fastPower(long long base,long long power){
lont lont result=1;
while(power>0){
if(power&1){
result=result*base%1000;
}
power>>=1;
base=(base*base)%1000;
}
return result;
}
copy的代码如上面,
但是那个并不是正经的快速幂函数,
只是一道十分普通的题的最简便写法。
仅此而已。
所以真正的快速幂还是要自己写的。
嗯,就这样。
我似乎非常成功的水了一篇博客。
rua
——by 某个不知名的精分患者