原题描述:人过大佛寺 * 我 =寺佛大过人 ,每个中文代表各不相同的0~9的数字。求出这个五位数
代码:
import java.util.Arrays;
//大致思路: 通过穷举五位数,找出一个数,如果这个数字能整除它的回文数,并且结果所得的数字和这个数不相同,也就是说总共有6个 0~9的数字。
public class huiwen {
public static void main(String[] args) {
// TODO Auto-generated method stub
printAll();
}
private static void printAll() {
// TODO Auto-generated method stub
boolean flag = true;
boolean IsUsed[] = new boolean[10]; //用来保存乘数的数组
int number, revert_number, temp, v = 0;
for (number = 12345; number < 100000; number++) {
flag = true;
Arrays.fill(IsUsed, false);
temp = number;
revert_number = 0;
for (int i = 0; i < 5 && flag == true; i++) {
v = temp % 10;
revert_number = revert_number * 10 + v;
temp /= 10;
if (IsUsed[v]) {
flag = false;
// break; 通过循环条件增加 flag==true 来取消 break 语句
} else {
IsUsed[v] = true;
}
}
if (flag == true && (revert_number % number == 0)) {
v = revert_number / number;
if (v < 10 && IsUsed[v] == false) {//只有该乘数不包含在五位数之内才合法
System.out.print("the result is: " + number + " * " + v + " = " + revert_number);
}
}
}
}
}
测试结果:
谢谢观看!