吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾数字是不允许的,例如,下面数字都是“吸血鬼”数字:
1260=21*60;
1827=21*87;
2187=27*81;
写一个程序,找出4位数的所有吸血鬼数字?菜鸟求高手解答。。

解决方案 »

  1.   

    import java.util.Arrays;public class XiXue {
    public static void main(String[] args) {
    for(int i = 1000;i<9999;i++){
    int t = (i/100)*(i%100);
    if(t>1000 & t < 9999){
    if(sort(t)==sort(i)){
    System.out.println(i/100+"*"+i%100+"="+t);
    }
    }
    }
    }
    public static int sort(int i){
    int[] sort = new int[String.valueOf(i).length()];
    int k = 0;
    do{
    sort[k++]=i%10;
    }while((i/=10) != 0);

    Arrays.sort(sort);
    int sum = 0;
    for(int t:sort){
    sum=(sum*10+t);
    }
    return sum;
    }

    }
      

  2.   

    java编程思想中的一道习题啊!!!
      

  3.   

    http://blog.csdn.net/wangqj541/archive/2010/06/10/5662541.aspx
      

  4.   

    自己动手写了一个,不足之处请哪位高手指教。import java.util.ArrayList;
    import java.util.Collections;public class Foo {
    public static void main(String []args)
    {
    int i;
    int j;
    int temp;
    for(i=10;i<100;i++)
    {
    for(j=10;j<100;j++)
    {
    ArrayList<Character> mylist_1=new ArrayList<Character>();
    ArrayList<Character> mylist_2=new ArrayList<Character>();
    if(((i%10==0)&&(j%10==0))||((i*j)<1000))
    {
    continue;
    }
    temp=i*j;
    for(int k=0;k<4;k++)
    {
    mylist_1.add((String.valueOf(temp)).charAt(k));
    }
    Collections.sort(mylist_1,null);
    for(int k=0;k<2;k++)
    {
    mylist_2.add((String.valueOf(i)).charAt(k));
    mylist_2.add((String.valueOf(j)).charAt(k));
    }
    Collections.sort(mylist_2,null);
    if(mylist_1.equals(mylist_2))
    {
    System.out.println(i+" * "+j+" = "+temp);
    }
    }
    }
    }
    }results:
    15 * 93 = 1395
    21 * 60 = 1260
    21 * 87 = 1827
    27 * 81 = 2187
    30 * 51 = 1530
    35 * 41 = 1435
    41 * 35 = 1435
    51 * 30 = 1530
    60 * 21 = 1260
    80 * 86 = 6880
    81 * 27 = 2187
    86 * 80 = 6880
    87 * 21 = 1827
    93 * 15 = 1395