#include<bits/stdc++.h>
using namespace std;
long long pow(long long a, long long n, long long mode)
{
long long sum = 1;
a = a % mode;
if(n==0&&mode==1)sum=0;
while (n > 0) {
if (n % 2 == 1) //判断是否是奇数,是奇数的话将多出来的数事先乘如sum
sum = (sum * a) % mode;
n /= 2;
a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
}
return sum;
}
int main()
{
long long a,n,sum=1,mode;
cin>>a>>n>>mode;
printf("%d^%d mod %d=%lld",a,n,mode,pow(a,n,mode));
return 0;
}
快速幂
最新推荐文章于 2023-06-08 11:16:54 发布