这书里有一道题是这样的:
Exercise 10: (5) 
A vampire number has an even number of digits and is formed by multiplying a pair of numbers containing half the number of digits of the result. The digits are taken from the original number in any order. Pairs of trailing zeroes are not allowed. Examples include:
1260 = 21 * 60
1827 = 21 * 87
2187 = 27 * 81
Write a program that finds all the 4-digit vampire numbers. (Suggested by Dan Forhan.)如果对特定的四位来求的话,就很简单了。我想问的是,推广到一般话的话,如6位,8位又是怎样解决呢?
方法最简单的胜,哈哈,大家快来玩玩吧。

解决方案 »

  1.   

    public static void main(String[] args) {
        
         String[] ar_str1,ar_str2; 
         int sum=0; 
         for(int i=10;i<100;i++){ 
         for(int j=i+1;j<100;j++){ 
         int i_val=i*j; 
         if(i_val<1000||i_val>9999) continue; 
         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+"组吸血鬼数"); 
         }     }
      

  2.   

    大家尽量想吧。如果觉得难,就先不管计算量,能算出来即可。
    不是只针对4位数,要拓展成6位或更多的情况。楼上的,等我测试一下,看看是否正确。
    最好说说思路,给路过的朋友参考一下。如果没有方案的话,最后我在BLOG里贴吧,写出我的方案。
    抛砖引玉,见谅了。