求a的b次方对p取模的值,其中 1 ≤ a,b,p ≤ 1 0 9 10^9 109
10^9次运算,会超时,得用快速幂。
什么是快速幂呢? 就是快速的幂运算。快速幂会将运算划分为 l o g n logn logn次运算,并且每一次的运算都能够运用到上一次运算的计算结果。
比如计算 a 11 a^{11} a11时,
因为11的二进制为1011,即 2 3 ⋅ 1 + 2 2 ⋅ 0 + 2 1 ⋅ 1 + 2 0 ⋅ 1 = 11 {2^3}\cdot1+ {2^2}\cdot0 + {2^1}\cdot1 + {2^0}\cdot1 =11 23⋅1+22⋅0+21⋅1+20⋅1=11
所以我们把它拆成 a 11 = a 8 ⋅ a 2 ⋅ a