#include <cstdio>
using namespace std;
int main()
{
const int c = 1000;
int a, b;
int i;
int outcom;
/*乘积的取余等于取余的乘积*/
while(true){
scanf("%d%d", &a, &b );
if( !a && !b ) /*a b 都为零则停止循环*/
break;
outcom = 1;
for( i=0; i<b; i++ ){
outcom = outcom *a % c;
}
printf("%d\n", outcom );
}
return 0;
}
参考二进制的写法 https://blog.csdn.net/hpu2022/article/details/81116707
#include <stdio.h>
typedef long long LL;
LL pow_mod(LL a, LL n, LL MOD)
{
LL res = 1;
while (n)
{
if(n&1) //当前n的二进制的最后一位为1,即此时的n为奇数
res = res * a % MOD;
a = a * a % MOD; //相当于base = a, 此后base的指数变化为 1,2,4,8...正好为2的0,1,2,3...次方
n >>= 1; //二进制数右移一位 ,缩小2倍
}
return res ;
}
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d\n", pow_mod(a, b, c));
return 0;
}