标签:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
long long quickmod(long long a,long long b,long long m)
{
long long ans = 1;
while(b)//用一个循环从右到左便利b的所有二进制位
{
if(b&1)//判断此时b[i]的二进制位是否为1
{
ans = (ans*a)%m;//乘到结果上,这里a是a^(2^i)%m
b--;//把该为变0
}
b/=2;
a = a*a%m;
}
return ans;
}
int main()
{
int m,a,b;
while(scanf("%d%d%d",&a,&b,&m)!=EOF)
{
long long int ans = quickmod(a,b,m);
printf("%lld\n",ans);
}
return 0;
}
版权声明:本文为博主原创文章,如有特殊需要请与博主联系 QQ : 793977586。
标签:
原文地址:http://blog.csdn.net/yeguxin/article/details/48130743