2017第八届蓝桥杯省赛Java A组--9数算式

版权声明:转载请注明出处 https://blog.csdn.net/xuyangxinlei/article/details/79630632
标题:9数算式
观察如下的算式:
9213 x 85674 = 789314562
左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。
请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?
注意:
1. 总数目包含题目给出的那个示例。

2. 乘数和被乘数交换后作为同一方案来看待。

public class Main {  
2.    static String num = "";  
3.    static int flag[] = new int[10];  
4.    static int sum = 0;  
5.    public static void main(String[] args) {  
6.        // TODO Auto-generated method stub  
7.        fun(0,num);  
8.        System.out.println(sum/2);//乘数被乘数交换视为一种方案,结果需要除以2  
9.    }  
10.    static void fun(int n,String num){//将乘数被乘数1-9进行排列  
11.        if(n==9){  
12.            insert(num);  
13.            return ;  
14.        }  
15.        for(int i=1;i<=9;i++){  
16.            if(flag[i]==0){  
17.                flag[i] = 1;  
18.                fun(n+1,num+i);  
19.                flag[i] = 0;  
20.            }  
21.        }  
22.    }  
23.    static void insert(String num){//将排序的数分为两个部分,进行相乘运算  
24.        for(int i=1;i<9;i++){  
25.            String left = num.substring(0, i);  
26.            String right = num.substring(i, 9);  
27.            int res = Integer.parseInt(left)*Integer.parseInt(right);  
28.            if(check(res,num)){  
29.                //System.out.println(left+"*"+right+"="+res);//输出结果,便于检查  
30.                sum++;  
31.            }  
32.        }  
33.    }  
34.    static boolean check(int res,String num){//用于判断计算结果是否满足1-9    
35.        int[] resFlag = new int[10];  
36.        resFlag[0] = 1;  
37.        String s = String.valueOf(res);  
38.        if(s.length()!=9){  
39.            return false;  
40.        }  
41.        for(int i=0;i<9;i++){  
42.            int n = Integer.parseInt(s.substring(i,i+1));  
43.            if(resFlag[n]==0){  
44.                resFlag[n] = 1;  
45.            }  
46.            else{  
47.                return false;  
48.            }  
49.        }  
50.        return true;  
51.    }  
52.}  
题目不难,在代码里有解释,注意审题,最后结果要除以2

猜你喜欢

转载自blog.csdn.net/xuyangxinlei/article/details/79630632