问题描述
求 A^B 的最后三位数表示的整数。
说明:A^B 的含义是“A 的B 次方”
输入
输入数据包含多个测试实例,每个实例占一行,由两个正整数A 和B 组成 (1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理
输出量
对于每个测试实例,请输出 A^B 的最后三位表示的整数,每个输出占一行。
样本输入
2 3
12 6
6789 10000
0 0
样本输出
8
984
1
代码
#include <iostream>
using namespace std;
//取模定理: (a*b)%1000 == ((a%1000) * (b%1000)) % 1000 用来防止溢出
int main(){
int a, b,temp, i;
while(cin>>a>>b,a||b){ //输入 两个0 停止
temp = 1;
for(i = 0; i < b; i++){
temp = ((a % 1000) * (temp % 1000)) % 1000; //防止溢出 同时取后三位
}
printf("%d\n", temp);
}
return 0;
}