题目描述:
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C。这四个数值.每个字母代表每个人所拥有的糖果数。
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。
输入描述:
输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。范围均在-30到30之间(闭区间)。
输出描述:
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。
如果不存在这样的整数A,B,C,则输出No。
思路:
将四个数值A - B, B - C, A + B, B + C的值用a,b,c,d表示,用a,b,c,d来表示A,B,C的值,形如
A - B = a, B - C = b, A + B = c, B + C = d,发现是一元三次方程组,解得,A = (a+c)/2,B = (b+d)/2 = (c - a)/2,C=(d-b)/2
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int a = 0,b = 0,c = 0,d = 0;
float A,B,C;
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
d = sc.nextInt();
//求解三元一次方程组,用a,b,c,d表示A,B,C
A = (a+c)/2;
B = (b+d)/2;
C = (d-b)/2;
if(A-((a+c)/2) != 0 ){
System.out.println("NO");
return;
}
if(B-((b+d)/2) != 0 || B-((c-a)/2) != 0){
System.out.println("NO");
return;
}
if(C-((d-b)/2) != 0){
System.out.println("NO");
return;
}
System.out.println((int)A + " " + (int)B + " " + (int)C);
}
}
}