题目链接:三连击(升级版)
java代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int a,b,c,count = 0;
Scanner in = new Scanner(System.in);
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
for(int i=1;i<=9;++i) {
for(int j=1;j<=9;++j) {
for(int k=1;k<=9;++k) {
// 标记数字是否已经用过了
boolean arr[] = new boolean[10];
Arrays.fill(arr, false);
// i,j,k不能存在相等的情况
if(i!=j&&i!=k&&j!=k) {
// 将i,j,k标记为true,表示已经用过这三个数了
arr[i] = arr[j] = arr[k] = true;
int num = i*100+j*10+k;
// 经检测这里必须添加判断num%a是否为0,不等于0的话就不能通过
if(num%a==0&&isPass(arr,num/a*b,a,b,c)&&isPass(arr,num/a*c,a,b,c)) {
System.out.println(num + " " + num/a*b + " " + num/a*c);
count++;
}
}
}
}
}
if(count==0)
System.out.println("No!!!");
}
// 判断后面两个数是否符合标准
public static boolean isPass(boolean arr[],int num,int a,int b,int c) {
// 1、num不能超范围
if(num<=999) {
while(num!=0) {
int temp = num % 10;
// 2、num中间的数字不能有0或者num中间的数字必须是没有使用过的
if(temp==0||arr[temp]==true)
return false;
// 标记为使用过了
arr[temp] = true;
num/=10;
}
return true;
}
else
return false;
}
}