概述
/************
图片链接
快速幂取模使用心得:看到过于大的数不要害怕,要学会细致分析,想想取模的作用,不就是帮你把大数化小了吗。
*************/
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
using namespace std;
// 极限情况下越界 c=2147483647,b=2147483647 选择下列方式
/*long long PowerMod(int a, int b, int c)
{
long long ans = 1,aa = a;
aa = aa%c;
while(b){
if(b & 1) ans = (ans*aa)%c;
// 如果b为奇数,则需要再多乘一次a
b >>= 1;
// 等价于 b /= 2;此处位运算更快,所以选择位运算
aa = (aa*aa) %c;
// b/2的同时要让a = a^2
}
return ans;
}*/
int PowerMod(int a, int b, int c)
{
int ans = 1;
a = a%c;
while(b){
if(b & 1) ans = (ans*a)%c;
// 如果b为奇数,则需要再多乘一次a
b >>= 1;
// 等价于 b /= 2;此处位运算更快,所以选择位运算
a = (a*a) %c;
// b/2的同时要让a = a^2
}
return ans;
}
int main(){
int a,b,c;
while(cin >> a >> b >> c){
cout << PowerMod(a,b,c) << endl;
}
return 0;
}
最后
以上就是雪白龙猫为你收集整理的PowerMod@快速幂取模的全部内容,希望文章能够帮你解决PowerMod@快速幂取模所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复