package luogu.orange;
import java.util.HashSet;
/**
* ClassName: P1008
* Package: luogu.orange
* Description:
*
* @Author tcw
* @Create 2023-06-08 21:09
* @Version 1.0
*/
public class P1008 {
public static void main(String[] args) {
// 求1, 2, 3, ..., 9九个数组成的三个三位数
// 且三个三位数要满足1:2:3的关系并且每个数字只能使用一次
// 枚举比例为1的那个三位数的三个数字,
// 然后通过计算判断后面两个三位数是否满足要求
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
for (int k = 1; k <= 9; k++) {
// 每个数字只能使用一次
if (i == j || i == k || j == k) continue;
// 计算出三个三位数
int num1 = i * 100 + j * 10 + k;
String num2 = num1 * 2 + "";
String num3 = num1 * 3 + "";
// 只能是三位数
if (num2.length()>3 || num3.length()>3) continue;
// 判断三个三位数是否满足条件
// 存储已经使用过的数字
HashSet<Character> integers = new HashSet<>();
integers.add((char) (i + '0'));
integers.add((char) (j + '0'));
integers.add((char) (k + '0'));
// 标记是否满足条件
boolean flag = true;
// 判断第二个三位数是否满足要求
for (int l = 0; l < 3; l++) {
char c = num2.charAt(l);
// 每个数字只能使用一次,已经使用过了,就不满足条件了
// 且数字不能为0,因为 * 2 可能会有0出现
if (integers.contains(c) || c == '0') {
flag = false;
break;
}
// 使用过的数字就存储下来
integers.add(c);
}
if (!flag) continue;
// 判断第三个三位数是否满足要求
for (int l = 0; l < 3; l++) {
char c = num3.charAt(l);
// 每个数字只能使用一次,已经使用过了,就不满足条件了
// 且数字不能为0,因为 * 3 可能会有0出现
if (integers.contains(c) || c == '0') {
flag = false;
break;
}
// 使用过的数字就存储下来
integers.add(c);
}
if (!flag) continue;
// 输出满足要求的三个三位数
System.out.println(num1 + " " + num2 + " " + num3);
}
}
}
}
}