以下以求a的b次方来介绍
把b转换成二进制数。该二进制数第i位的权为
![](http://b.hiphotos.baidu.com/baike/s%3D26/sign=6044c668f703738dda4a0b24b21ba471/faf2b2119313b07e13c5e9c00dd7912396dd8cfa.jpg)
例如
![](http://h.hiphotos.baidu.com/baike/s%3D103/sign=885b42e39c16fdfadc6cc2ee878d8cea/d0c8a786c9177f3e48bd45c571cf3bc79e3d5668.jpg)
11的二进制是1011
11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1
因此,我们将a¹¹转化为算
Pow
![](http://d.hiphotos.baidu.com/baike/s%3D95/sign=257afe75a8773912c0268964f919a226/e850352ac65c1038803a760ab3119313b17e89b6.jpg)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 int pow(int a,int b,int mod) 2 { 3 int ans=1; 4 a=a%mod; 5 while(b) 6 { 7 if(b&1) 8 ans=(ans*a)%mod; 9 a=(a*a)%mod; 10 b=b>>1; 11 } 12 return ans; 13 }