zoukankan      html  css  js  c++  java
  • 吸血鬼数字—THINKING IN JAVA中一道习题

    
    
    import java.util.*;
    
    public class Test01 {
        
        public static void main(String[] args) {
                   
            int num1, num2, product, count;
            int vampCount = 0;
            int[] startDigit = new int[4];  
            int[] productDigit = new int[4]; 
            for(num1 = 10; num1 <= 99; num1++){
           // num2 = num1 + 1 控制吸血鬼数值重复出现
                for(num2 = num1 + 1; num2 <= 99; num2++){
                    product = num1 * num2;
                    if(product < 1000)
                        continue;
                    startDigit[0] = num1/10;
                    startDigit[1] = num1%10;
                    startDigit[2] = num2/10;
                    startDigit[3] = num2%10;
                    productDigit[0] = product/1000;
                    productDigit[1] = (product%1000)/100;
                    productDigit[2] = (product%100)/10;
                    productDigit[3] = product%10;
                    count = 0;
                    for(int i = 0;i < 4; i++){
                        for(int j = 0; j < 4; j++){
                            if(startDigit[i] == productDigit[j]){
                                count++;
                                startDigit[i] = -1;
                                productDigit[j] = -2;
                            }
                        }
                    }
                    if(count == 4){
                        vampCount++;
                        System.out.println("第"+vampCount+"个吸血鬼数字为:"+product+"="+num1+"*"+num2);
                    }                
                }
            }
            
            
            /* 网上找到的另一种方法,很独到
            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; // 积小于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 + "组吸血鬼数");   
            
            */
            
        }
    }
    
    
    
     
  • 相关阅读:
    哲学家进餐
    文件系统
    文件读写原理(转)
    数据库join种类
    http与https区别
    数字证书(转)
    B. Rebranding
    扩展欧几里德算法、证明及其应用
    CodeForces 7C Line
    UVALive 7147 World Cup
  • 原文地址:https://www.cnblogs.com/wannianma/p/2994623.html
Copyright © 2011-2022 走看看