51Nod_1046 A^B Mod C
http://www.51nod.com/Challenge/Problem.html#!#problemId=1046
题目
给出3个正整数A B C,求A^B Mod C。例如,3 5 8,3^5 Mod 8 = 3。
输入
3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)
输出
输出计算结果
样例输入
3 5 8
样例输出
3
分析
B较大使用快速模幂法进行求解
C++程序
#include<iostream>
using namespace std;
typedef long long ll;
ll fun(ll x,ll n,ll mod)
{
ll ans=1;
while(n>0)
{
if(n&1)//if(n%2==1)
ans=ans*x%mod;
x=x*x%mod;
n>>=1;//n=n/2;
}
return ans;
}
int main()
{
ll a,b,c;
cin>>a>>b>>c;
cout<<fun(a,b,c)<<endl;
return 0;
}