快速幂·取模

10 分钟

结果很大时每步都取模防溢出,中间乘积用 long long。long long qpow(long long a,long long n,long long p){ long long r=1%p; a%=p; while(n){ if(n&1) r=r*a%p; a=a*a%p; n>>=1; } return r; }

小纸条

为什么 r 要初始化成 1%p 而不是 1?

登录 后可看答案

快速幂·取模 · 算法进阶 · op599 课程