A25737. 编程实现:给出一组正整数数据和一个正整数(目标值),从这组正整数中找出两个数,使这两个数相加后的和,小于等于目标值并且离目标值最接近,然后将两个数的和输出。如:正整数数据为【9,4,3,5】,目标值为10,其中正整数数据中4和3、4和5、3和5的和都小于目标值10,但离目标值最接近的两个数是4和5,其和为9。输入描述:第一行输入一组长度大于3个正整数的数据(正整数<10000),正整数之间以一个…
填空题
较易
知识点
题目描述
编程实现:
给出一组正整数数据和一个正整数(目标值),从这组正整数中找出两个数,使这两个数相加后的和,小于等于目标值并且离目标值最接近,然后将两个数的和输出。
如:正整数数据为【9,4,3,5】,目标值为10,其中正整数数据中4和3、4和5、3和5的和都小于目标值10,但离目标值最接近的两个数是4和5,其和为9。
输入描述:
第一行输入一组长度大于3个正整数的数据(正整数<10000),正整数之间以一个英文逗号隔开
第二行输入一个正整数 n(1<n<19997),表示目标值
输出描述:
输出一个整数。如果正整数数据中存在小于等于目标值并且离目标值最接近的两个数,则输出这两个数的和;如果正整数数据中不存在这样的两个数,即正整数数据中任意两个数的和都超过了目标值,则输出-1
样例输入:
9,4,3,5
10样例输出:
9参考答案
#参考答案1
group = input()
group = group.split(",")
intgroup = []
for i in group:
intgroup.append(int(i))
togal = int(input())
cnt = -1
for j in range(0,len(intgroup)):
for k in range(j+1,len(intgroup)):
if intgroup[j] + intgroup[k] <= togal and intgroup[j] + intgroup[k] > cnt:
cnt = intgroup[j] + intgroup[k]
print(cnt)
#参考答案2
inputList = list(map(int, input().split(',')))
target = int(input())
resaltList = []
for i in range(len(inputList)):
for j in range(i + 1,len(inputList)):
if inputList[i] + inputList[j] <= target:
resaltList.append(inputList[i] + inputList[j])
if resaltList == []:
print('-1')
else:
minn = target + 1
result = None
for i in resaltList:
if target - i < minn:
result = i
minn = target - i
print(result)答案解析
评分标准:
7分:能正确输出一组数据;
7分:能正确输出两组数据;
8分:能正确输出三组数据;
8分:能正确输出四组数据。
上一题
下一题