23全排列:马虎的算术

【题目】 
小明是一个急性子,上小学的时候经常把老师写在黑板上的题目抄错。 
有一次,老师出得题目是:36*495=? 他却给抄成了:396*45=? 
但结果却很戏剧性,他的答案竟然是对的!! 
因为36*495=396*45=17820 
类似这样的巧合情况可能还有很多, 
比如:27*594=297*54 
假设a b c d e代表1-9不同的5个数字(注意是各不相同的数字,且不含0) 
能满足形如:ab*cde=adb*ce这样的算式一共有多少种呢?

【分析】 
构造5个元素的数组,从9个数字的数组中取数字,找出所有的可能性。 
注意递归和回溯。

import java.math.BigInteger;
import java.util.*;

public class Lanq {

    public static void main(String[] args) {
        组素数();
    }

    public static void 组素数() {
        Scanner sc = new Scanner(System.in);
       int a=1,b=1,c=1,d=1,e=1;
       Set s=new TreeSet();
       int cnt=0;
       for(a=1;a<=9;a++)
           for(b=1;b<=9;b++)
               for(c=1;c<=9;c++)
                   for(d=1;d<=9;d++)
                       for(e=1;e<=9;e++)
                       {
                           s.clear();
                           int t1=a*10+b;
                           int t2=c*100+d*10+e;
                           int t3=a*100+d*10+b;
                           int t4=c*10+e;
                           if(t1*t2==t3*t4){

                               s.add(a);s.add(b);s.add(c);s.add(d);s.add(e);
                               if(s.size()==5){
                                   System.out.println(a+""+b+""+c+""+d+""+e);
                                   cnt++;
                               }
                           }
                       }
                       System.out.println(cnt);
    }
}

  

原文地址:https://www.cnblogs.com/passion-sky/p/8554251.html