4247: 两数之和
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
给出一组正整数和一个正整数,从这组正整数中找出两个数,使这两个数相加后的和小于等于目标值并且离目标值最接近,然后将两个数的和输出。如正整数9,1,2,3, 目标值为13,离目标值最近的9+3=12,输出12。
输入
第一行输入一组正整数, 用“,“分隔,第二行输入目标值。
输出
输出离目标值最近的两个数的和,如果任意两个数的和均大于目标值, 则输出-1
样例输入 复制
9,1,2,3
13
样例输出 复制
12
提示
ls=list(map(int,input().split(","))) t=int(input()) minD=t #最小差值初始设为目标值 diff=0 #与目标值的差值 ans=-1 #离目标值最近的两个数的和 for i in range(0,len(ls)-1): for j in range(i+1,len(ls)): if (ls[i]+ls[j])<=t: diff=t-ls[i]-ls[j] if diff<minD: minD=diff ans=ls[i]+ls[j] print(ans)