测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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)即可实现。

上一题 下一题