题目描述
Farmer John 的奶牛正在 mooZ
视频会议平台上举行每日集会。
她们发明了一个简单的数字游戏,为会议增添一些乐趣。
Elsie 有三个正整数 A、B 和 C。
这些数字是保密的,她不会直接透露给她的姐妹 Bessie。
她告诉 Bessie 七个范围在 1…109 之间的整数(不一定各不相同),并宣称这是 A、B、C、A+B、B+C、C+A和A+B+C 的某种排列。
给定这七个整数,请帮助 Bessie 求出 A、B 和 C。
可以证明,答案是唯一的。
输入格式
输入一行,包含七个空格分隔的整数。
输出格式
输出 A、B 和 C,用空格分隔。
数据范围
A≤B≤C
样例
输入样例:
2 2 11 4 9 7 9
输出样例:
2 2 7
算法1
将输入的 7 个数排序后,最小的两个数一定是 A、B,最大的数一定是 A+B+C,其次是 B+C 和 A+C。所以排序后第三个和第四个数分别是 C 和 A+B
因此只需判断第三个数是 C 还是 A+B 即可
时间复杂度:O(nlogn)
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10;
int nums[N];
int main()
{
for(int i = 0;i < 7;i ++)
scanf("%d",&nums[i]);
sort(nums,nums + 7);
int a = nums[0],b = nums[1];
int c;
if(a + b == nums[2]) c = nums[3];
else c = nums[2];
printf("%d %d %d",a,b,c);
return 0;
}
python3代码
nums = list(map(int,input().split()))
nums.sort()
if nums[0] + nums[1] == nums[2]:
print(nums[0],nums[1],nums[3])
else:
print(nums[0],nums[1],nums[2])