33,311
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h> //幂取模 a^n mod m
#include<stdlib.h>
/* a,n,m 大的情况 */
int getmod( int a,int n,int m ) //分治算法
{
if(n==0)
return 1;
int x=getmod(a,n/2,m);
long long ans=((long long )x*x)%m;
if(n%2==1) ans=ans*a%m;
return (int )ans;
}
int main()
{
int a,n,m;
scanf("%d%d%d",&a,&n,&m);
int x=getmod( a, n, m );
printf("%d\n",x);
system("pause");
return 0;
}
int getmod( int a,int n,int m ) //分治算法
{
if (n==0) /* 递归出口条件 */
return 1;
int x=getmod(a,n/2,m);
long long ans=((long long )x*x)%m;
if(n%2==1) ans=ans*a%m;
return (int )ans;
}