吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的。编程找出所有的4位数的吸血鬼数字。
public class VampireNumbers {
public static void main(String[] args) {
int sum = 0;
int[] a = new int[4];
int[] b = new int[4];
for (int i = 10; i <= 99; i++)
for (int j = i; j <= 99; j++) {
if ((i % 10 == 0) && (j % 10 == 0))
continue;
sum = i * j;
if (sum < 1000 || sum > 9999)
continue;
a[0] = sum / 1000;
a[1] = (sum % 1000) / 100;
a[2] = (sum % 1000 % 100) / 10;
a[3] = sum % 1000 % 100 % 10;
b[0] = i / 10;
b[1] = i % 10;
b[2] = j / 10;
b[3] = j % 10;
boolean flag = false;
int n = 0;
for (n = 0; n < 4; n++) {
flag = false;
for (int m = 0; m < 4; m++) {
if (a[n] == b[m]) {
flag = true;
b[m] = -1;
break;
}
}
if (!flag)
break;
}
if (flag && n == 4)
System.out.println(sum + "=" + i + "*" + j);
}
}
}
运行结果:
1395=15*93
1260=21*60
1827=21*87
2187=27*81
1530=30*51
1435=35*41
6880=80*86