快速幂

10 分钟

求 a 的 n 次方,一次次乘要 n 步。快速幂利用 a^n=(a^(n/2))^2,把指数不断折半,只需 O(log n) 步:long long qpow(long long a,long long n,long long p){ long long r=1; while(n){ if(n&1) r=r*a%p; a=a*a%p; n>>=1; } return r; }

小纸条

2^10 用快速幂大约要几轮乘法(数量级)?

登录 后可看答案

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