• 吸血鬼数字的另类解法


     在阅读java编程思想时,无意看到了这个题目,感觉很有意思,就写了如下的程序来运行,

    public static void main(String[] args) {
    
           try {
               int count = 9999;
               long beginTime = System.currentTimeMillis();
               while(count >1000){
                    if(count%100 != 0){
                        String num = count+"";
                        String[] strArr = new String[4];
                        strArr[0] = num.substring(0,1);
                        strArr[1] = num.substring(1,2);
                        strArr[2] = num.substring(2,3);
                        strArr[3] = num.substring(3,4);
                        //循环判断,i为不固定位所在位
                        for (int i = 0; i < 3; i++) {
                            String m = "",n = "";
                            boolean k = false;
                            //根据首位为0不变和不固定位i确定其余两位
                            for (int j = 1; j < 4; j++) {
                               if(j!=0 && j != i+1){
                                   if(k){
                                       n = strArr[j];
                                   }else{
                                       m = strArr[j];
                                       k = true;
                                   }
    
                                }
                            }
                            //System.out.println("m"+m+",n"+n);
                            //循环判断即可
                            if(Integer.parseInt(strArr[0]+strArr[i+1]) * Integer.parseInt(m+n) == count ){
                                System.out.println(strArr[0]+strArr[i+1] + "*" + m + n + "=" + count);
                            }else if(Integer.parseInt(strArr[0]+strArr[i+1]) * Integer.parseInt(n+m) == count ){
                                System.out.println(strArr[0]+strArr[i+1] + "*" + n + m + "=" + count);
                            }else if(Integer.parseInt(strArr[i+1]+strArr[0]) * Integer.parseInt(m+n) == count ){
                                System.out.println(strArr[i+1]+strArr[0] + "*" + m + n + "=" + count);
                            }else if(Integer.parseInt(strArr[i+1]+strArr[0]) * Integer.parseInt(n+m) == count ){
                                System.out.println(strArr[i+1]+strArr[0] + "*" + n + m + "=" + count);
                            }
                            }
    
                        }
                    count --;
                }
               long endTime = System.currentTimeMillis();
               long timeDif = endTime - beginTime;
               System.out.println("程序运行时间为"+timeDif);
    
           } catch (Exception e) {
                e.printStackTrace();
            }
        }

    在写之前也看了一些博客,但主要是我刚看到这个的时候就是想先确定数字,然后确定每一位,和有些博客先试能不能满足的方法不太一样。还有一点就是,我想这个数字肯定不会就只有4位,本来是想写一个可以任意指定count的程序,但此处的位数和数字的组合暂时未想到办法处理,之后会想办法完善,也想问一下大家有没有什么办法。

    最后,程序运行结果如下:

  • 相关阅读:
    Shell学习笔记 ——第一天
    Myclipse 安装 Maven遇见的N个异常
    Myeclipse 创建 Web Maven项目
    Guava API
    String 转Map(基于Guava类库)
    Mybatis——helloWorld级程序
    redis
    listener、context、filter、servlet及其加载顺序
    junit 单元测试
    hibernate —— 树状存储
  • 原文地址:https://www.cnblogs.com/kingmodeyu/p/13183481.html
Copyright © 2020-2023  润新知