问题描述
7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
输出格式
每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格
较小的乘数写在前面
较小的乘数写在前面
样例输出
问题中的式子在结果中会出现一行如下:
7254 = 39 x 186
7254 = 39 x 186
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main{
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for(int i=1; i<10000; i++){
for(int j=1; j<i; j++){
if(i*j>10000){
break;
}else if((i+""+j+""+i*j).length()==9){
if(test(i,j,i*j)){
list.add((i*j+" "+"="+" "+j+" "+"x"+" "+i));
}
}
}
}
Collections.sort(list);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
}
private static boolean test(int i, int j,int result) {
String s = i+""+j+""+result;
char [] ch = s.toCharArray();
Set<Character> set = new HashSet<Character>();
for(int index=0; index<ch.length; index++){
set.add(ch[index]);
}
if(!set.contains('0') && set.size()==9){
return true;
}
return false;
}
}