题目描述
有三个正整数 a, b, c,现在给定 x1 = a+b, x2 = a+c,x3 = b+c, x4 = a+b+c,请求出 a, b, c 分别是多少。
一行四个正整数, x1, x2, x3, x4。给出的四个正整数是无序的。
输出一行三个整数,分别代表 a, b, c。如果有多解请任意输出一个。
x<1000000000
样例输入 3 6 5 4
样例输出 2 1 3
题解
首先,x4一定大于x3,x2,x1 。通过这一点,我们便可以知道,最大的那一个就是x4。然而剩余的三个整数是被打乱的,不过没有关系,因为不管怎么样,我们认为他打乱后和原来一样,也是一种方法,只要成立即可输出。
代码如下
#include<bits/stdc++.h>
using namespace std;
int a[10],maxa=-1,k;
int main()
{
cin>>a[1]>>a[2]>>a[3]>>a[4];
for(int i=1;i<=4;i++)//找x4
{
if(maxa<a[i])
{
maxa=a[i];
k=i;
}
}
for(int i=1;i<=4;i++)
if(i!=k)
cout<<maxa-a[i]<<" ";//输出x4-(x1~x3),求出每个数
return 0;
}