求解吸血鬼数二(逆向思维)的思路:
1.不在对所有的四位数进行遍历了,先找出两个两位数
2.将两个两位数进行相乘,得到一个乘积
3.将两个两位数的所有位上的数值提出来组成一个数组
4.将得到的乘积的位上的所有数值提出来组成一个数组
5.对生成的两个数组进行排序
6.比较两个排序后的数组是否相等(若相等,则为吸血鬼数;反之,不是)
package xiaocheshi.com.ftl;
import java.util.Arrays;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
public class XiXueGuiShu {
public static void main(String[] args) {
//反向思维,将两个两位数进行相乘,使得到一个四位数
int count =0;
for (int i =10; i < 100; i++) {
for (int j=Math.max(1000/i, i+1); j<100; j++) {
int n = i * j;
//将数n转变为字符串再按位拆分成数组
String[] str1 = String.valueOf(n).split("");
//将数id和j转变为字符串拼接以后,再按位拆分成数组
String[] str2 = (String.valueOf(i) + String.valueOf(j)).split("");
//将数组str1和str2进行排序
Arrays.sort(str1);
Arrays.sort(str2);
//判断两个数组是否一样
if (Arrays.equals(str1, str2)) {
count++;
System.out.println("第" + count + "组: " + i + "*" + j + "=" +n);
}
}
}
}
}
输出结果: