问题描述
7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
输出格式
每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格
较小的乘数写在前面
样例输出
问题中的式子在结果中会出现一行如下:
7254 = 39 x 186
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.Collections; 4 import java.util.List; 5 import java.util.Scanner; 6 7 class Main{ 8 public static void main(String[] args) { 9 List<A> list = new ArrayList<>(); 10 for(int i=1;i<2000;i++){ 11 for(int j=1;j<=i;j++){ 12 int ji = i*j; 13 String s = ""+ji+i+j; 14 if(s.length()==9&&f(s)){ 15 A a = new A(); 16 a.ji = i*j; 17 a.cheng = j; 18 a.beiCheng = i; 19 list.add(a); 20 } 21 if(s.length()>9){ 22 continue; 23 } 24 } 25 } 26 Collections.sort(list); 27 for(A a:list){ 28 System.out.println(a.ji+" = "+a.cheng+" x "+a.beiCheng); 29 } 30 } 31 public static boolean f(String s){ 32 char[] a = {‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘}; 33 char[] b = s.toCharArray(); 34 Arrays.sort(b); 35 int i; 36 for(i=0;i<9;i++){ 37 if(a[i]!=b[i]){ 38 break; 39 } 40 } 41 if(i==9){ 42 return true; 43 }else{ 44 return false; 45 } 46 } 47 } 48 class A implements Comparable<A>{ 49 int ji; 50 int beiCheng; 51 int cheng; 52 @Override 53 public int compareTo(A o) { 54 if(ji==o.ji){ 55 return cheng-o.cheng; 56 }else{ 57 return ji-o.ji; 58 } 59 } 60 }
时间: 2024-11-17 09:14:25