洛谷-P1008 [NOIP1998 普及组] 三连击
将 1, 2, …, 9 共 9 个数分成 3 组,分别组成 3个三位数,且使这 3 个三位数构成 1 : 2 : 3 的比例,试求出所有满足条件的 3 个三位数。
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
int b,c;
String str;
HashSet<Character> hs =new HashSet<>();
for (int a = 123; a <=329; a++) {
b=a*2;
c=a*3;
str=a+""+b+""+c;
for (int i = 0; i <9; i++) {
if(str.charAt(i)!='0') hs.add(str.charAt(i));//排除含有0的
}
if(hs.size()==9) System.out.println(a+" "+b+" "+c);//输出9个数不重复的项
hs.clear();
}
}
}
思路:借助 HashSet 集合元素不可重复的性质,用结果筛选是否满足题目1-9不重复的条件。
先定义a的范围:最小是123,最大是987/3=329,在这一范围中将a,b=2a,c=3a的数字放入HashSet集合中,并检验长度和是否含0并排除后输出。