问题描述
有一天,JOE终于不能忍受计算ab%c这种平凡的运算了。所以他决定要求你写一个程序,计算ab%c。
提示:若b为奇数,,ab=(a(b/2))2*a,否则ab=(a(b/2))2。
输入格式
三个非负整数a,b,c;
输出格式
一个整数ans,表示a^b%c;
样例输入
7 2 5
样例输出
4
一开始我都没有发现这是求a的b次方再对c取模
///这个公式实际就是快速幂取模算法快速幂取模(详细)
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int m,n,c;
long long int s=1;
cin>>m>>n>>c;
m=m%c;
while(n)
{
if(n%2==1)
s=(s*m)%c;
n/=2;
m=(m*m)%c;
}
cout<<s<<endl;
}