题目描述
给定一个正整数数组,检查数组中是否存在满足规则的数字组合
规则:A=B+2C
输入描述
第一行输出数组的元素个数。
接下来一行输出所有数组元素,用空格隔开。
输出描述
如果存在满足要求的数,在同一行里依次输出规则里A/B/C的取值,用空格隔开。
如果不存在,输出0。
备注
1.数组长度在3-100之间。
2.数组成员为0-65535,数组成员可以重复,但每个成员只能在结果算式中使用一次。如:数组成员为[0,0,1,5],0出现2次是允许的,但结果0=0+2*0是不允许的,因为算式中使用了3个0。
3.用例保证每组数字里最多只有一组符合要求的解。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 题目描述
// 给定一个正整数数组,检查数组中是否存在满足规则的数字组合
// 规则:A=B+2C
//
// 输入描述
// 第一行输出数组的元素个数。
// 接下来一行输出所有数组元素,用空格隔开。
//
// 输出描述
// 如果存在满足要求的数,在同一行里依次输出规则里A/B/C的取值,用空格隔开。
// 如果不存在,输出0。
//
// 备注
// 1.数组长度在3-100之间。
// 2.数组成员为0-65535,数组成员可以重复,但每个成员只能在结果算式中使用一次。如:数组成员为[0,0,1,5],0出现2次是允许的,但结果0=0+2*0是不允许的,因为算式中使用了3个0。
// 3.用例保证每组数字里最多只有一组符合要求的解。
Scanner scanner=new Scanner(System.in);
int count=scanner.nextInt();
Integer [] arrs= Arrays.stream(scanner.nextLine().split("[ ]")).map(Integer::parseInt).toArray(Integer[]::new);
Arrays.sort(arrs, (a, b) -> {
return b - a;
});
System.out.println(getDATA(count,arrs));
}
public static String getDATA(int n,Integer []arrs){
for (int i=0;i<n;i++){
for (int j=i+1;j<n;j++){
for (int k=j+1;j<n;j++){
if (arrs[i]==arrs[j]+2*arrs[k]){
return arrs[i]+" "+arrs[k]+" "+arrs[j];
}
if (arrs[i]==arrs[k]+2*arrs[j]){
return arrs[i]+" "+arrs[k]+" "+arrs[j];
}
}
}
}
return "0";
}
}