1抽 签
你的朋友提议玩一个游戏:将写有数字的;I个纸片放入口袋中,你可以从口袋中抽取 4 次纸 片 ,每次记下纸片上的数字后都将其放回口袋中。如果这 4 个数字的和是m, 就是你赢,否 则就是你的朋友赢。你挑战了好几回,结果一次也没赢过,于是怒而撕破口袋,取出所有纸 片 ,检查自己是否真的有赢的可能性。请你编写一个程序,判断当纸片上所写的数字是 k1,k2,k3……kn时,是否存在抽取 4 次和为 w 的方案。如果存在,输出 yes; 否则,输出 no, 限制条件 1 <n<50 1 < m < 10^8 1 < ki < 10^8 输入 n = 3 m = 10 k = {1, 3, 5} 输出 Yes (例如4次抽取的结果是1、1、3、5, 和就是10)
输入 n = 3 m = 9 k = {1, 3, 5} 输出 No (不存在和为9的抽取方案)
n = int(input())
m = int(input())
k = list(map(int, input().split()))
flag = False
for i in range(n):
for j in range(n):
for m in range(n):
for n in range(n):
if k[i] + k[j] + k[m] + k[n] == m:
flag = True
if flag:
print("Yes")
else:
print("No")
2三角形
有n根棍子,棍子的长度为 ai,想要从中选出 3 根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出 0。 
限制条件: 3<= n <=100 1<= ai <=10^6
输入 n = 5 a = {2, 3, 4, 5, 10} 输出 12 ( 选择3、4、5时) 输入 n = 4 a = {4, 5, 10, 20} 输出 0 ( 无论怎么选都无法组成三角形)
n = int(input())
a = list(map(int,input().split()))
def permit(n, a):
ans = 0
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
len = a[i] + a[j] + a[k]
ma = max(a[i], max(a[j], a[k]))
rest = len - ma
if ma < rest:
ans = max(ans, len)
return ans
print(permit(n, a))
3Ants (POJ No.1852)
 输入 L = 10 n = 3 x = {2,6,7} 输出 min = 4 (左、右、右) max= 8 ( 右、右、右)
L = int(input())
n = int(input())
x = list(map(int, input().split()))
def solve(n,x):
minT = 0
for i in range(n):
minT = max(minT,min(x[i],L - x[i]))
maxT = 0
for i in range(n):
maxT = max(maxT,max(x[i],L - x[i]))
print(minT)
print(maxT)
solve(n,x)
|