快速幂
普通的函数写循环 时间就寄了 所以需要快速幂
已知(ab)%c=((a%c)(b%c))%c 可以初步优化 但是依然不够
核心思想就是每一步都把指数分成两半 而相应的底数做平方运算 如
3^10=3333333333
3^10=(33)(33)(33)(33)(33)
3^10=(33)^5
3^10=9^5
而当指数为奇数时 指数减一化为偶数
9^5=(9^4)(9^1)继续操作
9^5=(81^2)*(9^1)
9^5=(6561^1)*(9^1)
最后(9^1)(6561^1)=96561=59049
最后求出的幂结果实际上就是在变化过程中所有当指数为奇数时底数的乘积
求a的b次方取余1000
1 | long long FastPower(long long base,long long power) |
在此之外 可以再理解原理的基础上由向下取整简化
1 | power-=1; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hello Flu1t!