标签:20 int 0x result return 快速 mod
快速幂
示例
- \(x^{20}\)
- \(\begin{align}20=&(10100)_2\\=&0*2^0+0*2^1+1*2^2+0*2^3+1*2^4\\=&0+0+4+0+16\end{align}\)
- \(x^{20}=x^0x^0x^4x^0x^{16}\)
- 每前进一位,x就要平方一次
代码实现
//基础版,用处不大(既然需要快速幂了int大概是不够的)
//可以把 函数、x、result 改为long long型
int QuickPow(int x,int a){
int result = 1;
while(a){
if(a%2==1) result *= x;
x *= x;
a /= 2;
}
return result;
}
//带取模的快速幂
int mod = 17001;
int QuickPow(int x,int a){
int result = 1;
while(a){
if(a%2==1) result *= x;
x *= x;
a /= 2;
x %= mod;
result %= mod;
}
return result;
}
标签:20,int,0x,result,return,快速,mod 来源: https://www.cnblogs.com/burnling/p/15809016.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。