【问题描述】
模运算,即求余运算,是数论中的重要内容,在加密领域有非常重要的应用,其运算公式为 ab mod p, 其中 a、b、p 均为正整数,输入a、b、p 的值,求上述运算的结果,建议用递归实现。
【输入形式】
输入为一行三个数a、p (1≤a、p ≤1000,1≤ b <10000)
【输出形式】
输出为一个整数。
# include <iostream>
using namespace std;
typedef long long int ll;
ll getMod(ll a, ll b, ll p);
int main()
{ ll a, b, p;
cin>>a>>b>>p;
ll ans=getMod(a,b,p);
ans=ans%p;
cout<<ans<<endl;
return 0;
}
ll getMod(ll a, ll b, ll p)
{
ll h=1;
while(b)
{
if(b&1)
h=h*a%p;
b>>=1;
a=a*a%p;
}
return h%p;
}