博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学:快速幂取模
阅读量:4978 次
发布时间:2019-06-12

本文共 476 字,大约阅读时间需要 1 分钟。

对于一个幂,分为底数部分和指数部分,我们将指数部分写成二进制的形式。

比如说2的5次方,我们将5写成101,接下来我们从后往前看101的每一位二进制数是0还是1

如果是0,那么就直接让子结果自身平方即可,如果是1,就要让最终结果乘上当前的子结果,然后再将子结果自身进行平方。

子结果自身进行平方是一直进行的,但是只有当当前走到二进制中是1的地方的时候才进行与结果的乘积。

最终结果可能很大,经常进行取模要不存不下。

#include
using namespace std;int a,b,c;long long ans=1,y;int main(){ cin>>a>>b>>c; y=a; while(b!=0) { if(b%2==1) ans=ans*y%c; y=y*y%c; b/=2; } cout<

 

转载于:https://www.cnblogs.com/aininot260/p/9270821.html

你可能感兴趣的文章