package java_001;
import java.util.Arrays;
/**
* Thinking in Java
*吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,
*这对数字各包含乘积的一半位数的数字,
*其中从最初数字选取的数字可以任意排序
*以两个0结尾的数字是不允许的。
*四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81……
*编写程序列出所有的4位的吸血鬼数
*
*列出结果:一共7个:1260=21*60,1395=15*93,
*1435=41*35,1530=51*30,1827=87*21,
*2187=27*81,6880=86*80
*/
public class Xi {
public static int[] toIntArray(int num1, int num2) {
//两个二位数转数组
int[] a = new int[4];
a[0] = num1 / 10;
a[1] = num1 % 10;
a[2] = num2 / 10;
a[3] = num2 % 10;
return a;
}
public static int[] toIntArray(int num) {
//四位数转数组
int[] a = new int[4];
a[3] = num % 10;
a[2] = num % 100 / 10;
a[1] = num % 1000 / 100;
a[0] = num / 1000;
return a;
}
public static void testToIntArray(int i,int j,int xi){
int[] a = toIntArray(i, j);
int[] b = toIntArray(xi);
System.out.println("1:" + Arrays.toString(a));
System.out.println("2:" + Arrays.toString(b));
}
public static boolean notInList(int key,int[] list,int sum){
for (int k = 0; k < sum; k++) {
if (list[k] == key) {
return false;
}
}
return true;
}
public static void main(String[] args) {
///*
int[] list=new int[10];
int sum=0;
for(int i=11;i<100;i++){
for(int j=10;j<100;j++){
int xi=i*j;
if(xi<999||xi>10000)
continue;
int[] a=toIntArray(i,j);
int[] b=toIntArray(xi);
Arrays.sort(a);
Arrays.sort(b); //将a,b数组元素排序
if(Arrays.equals(a, b) && notInList(xi, list, sum)){
//判断a,b数组是否相等,并且吸血鬼数不在list内(去重)
list[sum]=xi;
sum++;
System.out.print(xi+",");
}
}
}
System.out.println("\nsum="+sum);
//*/
}
}
ThinkingInJava_吸血鬼数
最新推荐文章于 2021-02-17 01:21:24 发布