码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂!~

时间:2018-12-01 13:20:16      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:meta   tle   int   word   param   turn   font   恢复   fun   

---恢复内容开始---

基本代码:

#include <iostream>
#include <algorithm>

using namespace std;
int PowerMod(long long a, long long b, int n)
{
int ans=1;
a=a%n;
while(b>0)
{
if(b%2==1)
ans=(ans*a)%n;
b/=2;
a=(a*a)%n;
};
return ans;
}
int main()
{
long long a,b;
int ans,n;
cin>>a>>b>>n;
ans=PowerMod(a,b,n);
cout<<ans<<endl;
return 0;
}

 

 

这里有一个重要的公式

个人认为 是这道题的关键所在

(a * b) mod n=(a mod n * b mod n) mod n

   利用这个公式   可以每乘一步就取一次模  为了避免ll爆掉

 

快速幂!~

标签:meta   tle   int   word   param   turn   font   恢复   fun   

原文地址:https://www.cnblogs.com/darlingroot/p/10048586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!