快速幂
对于一个非常大的数进行指数运算时,运算会很慢。
例如计算 5 19 5^{19} 519时,直接算就是19个5相乘。快速幂则二进制分解19,得到10011,这时只需要计算3次就可得到答案
设置ans=1,tmp,top从10011的低位指向高位,
10011
5 19 5^{19} 519= 5 10011 ( 2 ) 5^{10011(2)} 510011(2)= 5 1 ( 2 ) 5^{1(2)} 51(2) ∗ * ∗ 5 10 ( 2 ) 5^{10(2)} 510(2) ∗ * ∗ 5 10000 ( 2 ) 5^{10000(2)} 510000(2)
开始模拟
top为1,tmp= 5 1 5^{1} 51, ans ∗ * ∗=tmp;
top为1,tmp= 5 10 ( 2 ) 5^{10(2)} 510(2)=tmp ∗ * ∗tmp, ans ∗ * ∗=tmp;
top为0,tmp== 5 100 ( 2 ) 5^{100(2)} 5100(2)=tmp ∗ * ∗tmp,
top为0,tmp=