小小yh的数论
程序员文章站
2022-06-08 13:08:18
...
题目:
方法一:快速幂取模
#include<bits/stdc++.h>
long long quick_pow(long long x,long long y,long long m){
long long res=1;
while(y>0){
if(y&1)//取n的最后一位,并且判断这一位是否需要跳过,0跳过
res=res*x%m;
x=x*x%m;
y>>=1;//把n右移一位,目的是把刚处理过的n的最后一位去掉
}
return res;
}
int main()
{
int a,n,p;
while(~scanf("%d%d%d",&a,&n,&p)){
printf("%d\n",quick_pow(a,n,p));
}
return 0;
}
方法二:根据题目理解
#include <stdio.h>
int main()
{
int a,n,p,m;
while(~scanf("%d %d %d",&a,&n,&p))
{
m=pow(a,n%(p-1));
printf("%d\n",m%p);
}
return 0;
}
上一篇: 网站搬家到阿里云的过程实录