首页 > 代码库 > a^b%c 小技巧
a^b%c 小技巧
我们知道像a^b这样的数在计算的时候因为大的增长速度很快,所以经常越界,所以很多题目在出的时候都会让我们取模。
a^b = a*a*a*a……(一共b个a相乘);我们前一篇文章在说两个数相乘的时 ,如果两个数足够大的话,这两个数相乘就会越界,使计算结果出错。所以我们在来写a^b时应该先写出两个数相乘的计算方法。
这个就不多说了,上一篇文章中有在这只是贴出代码。
__int64 mult_mod(__int64 a,__int64 b,__int64 c) { a=a%c; b=b%c; __int64 ans=0; while(b) { if(b&1) { ans+=a; ans=ans%c;} a<<=1;a%=c; b>>1; } return ans; }
现在我们再来说一下 a^b%c
我们在处理它时同样适用二进制和位运算来处理所以我说二进制和位运算是很重要的嘛。
__int64 pow_mod(__int64 a,__int64 b,__int64 c) { a=a%c; __int64 ans=1; while(b) { if(b&1) { ans =mult_mod(ans,a,c); ans%=c; } a=mult_mod(a,a,c); b>>1; } return ans; }
这和a*b%c有些类似,其实遇到这种位运算的都是这样来处理,我们学会了以后就能自己灵活的运用了。
好了。
感谢自己坚持。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。