A25671. 石头运输
填空题
较易
知识点
题目描述
石头运输
题目描述
给定三个整数,表示三块石头的重量。
请你在不分割石头的情况下,将三块石头分给两辆车运输,使得两辆车各自运输的石头总重量尽可能相近,并分别输出两辆车运输的石头总重量。
例如:
• a. 三块石头的重量分别为 4、2、3;
• b. 一辆车运输重量为4的石头;
• c. 另一辆车运输重量为2和3的石头;
• d. 两辆车运输的石头总重量分别是4和5,各自运输的石头总重量已尽可能相近,所以输出4和5。
输入描述
输入仅一行,包含三个整数(1≤整数≤200),分别表示三块石头的重量,整数之间以一个空格隔开
输出描述
按从小到大的顺序输出两个整数,分别表示两辆车各自运输的石头总重量,整数之间以一个空格隔开
样例输入
4 2 3样例输出
4 5参考答案
w = list(map(int,input().split()))
w_min = w_max = w[0]
for i in range(1,3):
if w_min > w[i]:
w_min = w[i]# 求最小值
if w_max < w[i]:
w_max = w[i]# 求最大值
w_mid = sum(w)- w_min - w_max # 求最中间值
c1 = w_min + w_mid
c2 = w_max
if c1 > c2:
print(c2, c1)
else:
print(c1, c2)答案解析
两辆车运输的石头总重量尽可能相近则需要一辆车运最重的一块,另一辆车运较轻的两块。可通过数学方法推算:
a,b,c为石头重量从小到大排序。
两辆车拉石头共三种情况:
第一辆拉a+b,第二辆拉 c;
第一辆拉a+c,第二辆拉 b;
第一辆拉b+c,第二辆拉 a。
接下来找到差值最小的情况。
a+b-c = a+(a+x)-(a+x+y) = a - y
a+c-b = a+(a+x+y)-(a+x) = a + y
b+c-a = (a+x)+(a+x+y)-a = a+2x+y
已知x≥0,y≥0,所以第一种情况差值最小。
只需要求出最大重量,最小重量,再通过数学运算求出中间重量(sum(w) - w_min - w_max)即可实现。
上一题
下一题