在阅读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的程序,但此处的位数和数字的组合暂时未想到办法处理,之后会想办法完善,也想问一下大家有没有什么办法。
最后,程序运行结果如下: