大家帮忙吧 偶数位的数字
4位的:像1260 = 21×60
            1827= 21×87
俩个乘数每个为结果中的俩个数字组成,但4位数不能以00结尾
列出 所有的四位数的吸血鬼数 
谢谢。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【winterfeng8586】截止到2008-07-26 18:19:23的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    简单方法没有想到。最笨的就是把所以情况if一下,符号的输出。
    给从网上扒下点
    /**
     * 功能:找出四位数中由二位数相乘得出的吸血鬼数
     * @author  wiley
     */
    public class Vampire {
     public static void main(String[] arg){
      String[] ar_str1,ar_str2;
      int sum=0;
      //双重循环穷举
      for(int i=10;i<100;i++){
       //j=i+1避免重复
       for(int j=i+1;j<100;j++){
        int i_val=i*j;
        if(i_val<1000||i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环
        ar_str1=String.valueOf(i_val).split("");
        ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
        java.util.Arrays.sort(ar_str1);
        java.util.Arrays.sort(ar_str2);
        if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组 
         sum++;
         System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val);
        }
       }
      }
      System.out.println("共找到"+sum+"组吸血鬼数");
     }
    }运行结果:
    C:\work>java  Vampire
    第1组: 15*93=1395
    第2组: 21*60=1260
    第3组: 21*87=1827
    第4组: 27*81=2187
    第5组: 30*51=1530
    第6组: 35*41=1435
    第7组: 80*86=6880
    共找到7组吸血鬼数
    ----------------------摘自http://www.java3z.com/cwbwebhome/article/article5/5724.html?id=1083这里
      

  3.   

    public class Vampire { 
    public static void main(String[] arg){ 
      String[] ar_str1,ar_str2; 
      int sum=0; 
      //双重循环穷举 
      for(int i=10;i <100;i++){ 
      //j=i+1避免重复 
      for(int j=i+1;j <100;j++){ 
        int i_val=i*j; 
        if(i_val <1000 ¦ ¦i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环 
        ar_str1=String.valueOf(i_val).split(""); 
        ar_str2=(String.valueOf(i)+String.valueOf(j)).split(""); 
        java.util.Arrays.sort(ar_str1); 
        java.util.Arrays.sort(ar_str2); 
        if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组 
        sum++; 
        System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val); 
        } 
      } 
      } 
      System.out.println("共找到"+sum+"组吸血鬼数"); 

    } 运行结果: 
    C:\work>java  Vampire 
    第1组: 15*93=1395 
    第2组: 21*60=1260 
    第3组: 21*87=1827 
    第4组: 27*81=2187 
    第5组: 30*51=1530 
    第6组: 35*41=1435 
    第7组: 80*86=6880 
    共找到7组吸血鬼数 楼上的聪明
      

  4.   

    楼主是在看Think In Java吧。 正好这题我做了, 
    public class Fun {public static void main(String[] args) {
      
       int x = Integer.parseInt(args[0]);
      
       for (int i=0; i<x; i++)
        for (int j=x; j>=i; j--)
        {
         if (isVampireNumber(i, j))
          System.out.println(i*j + "=" + i + "*" + j);
        }
    }private static boolean isVampireNumber(int a, int b) {
       String str1 = Integer.toString(a*b);
       char[] chars1 = str1.toCharArray();
      
       String str2 = Integer.toString(a) + Integer.toString(b);
       char[] chars2 = str2.toCharArray();
      
       sortChars(chars1);
       sortChars(chars2);
      
       if (chars1.length != chars2.length) return false;
      
       for (int i=0; i<chars1.length; i++) {
        if (chars1[i] != chars2[i])
         return false;
       }
      
       return true;
    }private static void sortChars(char[] x) {
      
       for (int i=0; i<x.length; i++)
        for (int j=0; j<x.length-1; j++) {
         if (x[j] > x[j+1]) {
          char t = x[j];
          x[j] = x[j+1];
          x[j+1] = t;
         }
        }
    }
    }
      

  5.   

    import java.util.*;public class Test { 
    public static void main(String[] args) {   
      int[] s1 = new int[4];
      int[] s2 = new int[4]; 
      
      for (int i=10; i <100; i++) 
        for (int j=i; j<100; j++) { 
         int n = i * j;
         /**n,i,j的各位数字分别存储在数组s1,s2中*/
         if((n>1000) && (n%1000) != 0){
         s1[0] = n % 10;
         s1[1] = (n/10) % 10;
         s1[2] = (n/100) % 10;
         s1[3] = (n/1000) % 10;
         s2[0] = i % 10;
         s2[1] = (i/10) % 10;
         s2[2] = j % 10;
         s2[3] = (j/10) % 10;
         Arrays.sort(s1);       //对数组进行快速排序
         Arrays.sort(s2);
         if(Arrays.equals(s1,s2))  //判断排序后的数组s1 ,s2是否完全匹配
    System.out.println(n);
      }
    }    
    }
    }