http://www.luogu.org/problem/show?pid=1226
快速幂取余。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int poww(int a, int b, int c)
{
int ans = 1, base = a%c;
while (b!=0)
{
if (b & 1!=0) ans = (ans*base)%c;
base = (base*base)%c;
b>>=1;
}
return ans;
}
int main()
{
int a,b,c;
scanf("%d%d%d", &a ,&b ,&c);
printf("%d^%d mod %d=%d", a, b, c, poww(a,b,c));
return 0;
}