题目描述:
求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
示例代码:
import java.util.Scanner;
public class Main {
public static int binaryQiumi(int a,int b){
a %= 1000;//a^b的后三位整数值只与a的后三位及b有关
int result = 1;
while (b!=0){
if (b%2==1){result*=a;result%=1000;}//对中间结果也只保留后三位
b/=2;
a*=a;//a不断累乘,分别对应a^1,a^2,a^4,a^8,...
a%=1000;//对中间结果也只保留后三位
}
return result;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int a = scanner.nextInt();
int b = scanner.nextInt();
if (a==0&&b==0){break;}
int result = binaryQiumi(a,b);
System.out.println(result);
}
}
}