python有关于列表的问题 :**要开习题课,计算多少学生要参加

i要开习题课,同学们都不愿意参加。没办法,于是规定:1、最少有一半的班级必须有同学参加;2、必须参加的班级中至少有一半的同学必须参加。现请你写一段程序来计算依据此规则习题课至少有多少学生参加。
求解答!

img

取到最少人数的班级。用sort函数可以递增排列。
数组中取一半。
然后取一半人数。遇到浮点数向后取整。

代码可以这么写:

from itertools import combinations
n=int(input())
x=list(map(int,input().split()))
if n%2==0:
    x0= min(combinations(x,n//2))
    if sum(x0) % 2 == 0:
        res = sum(x1)//2
    else:
        res = sum(x0)//2+1
else:
    x0 = min(combinations(x, n//2+1))
    if sum(x0)%2==0:
        res=sum(x0)//2
    else:
        res=sum(x0)//2+1
print(res)

运行结果:

F:\2021\qa\ot2>t4
4
4 5 6 7
5

F:\2021\qa\ot2>t4
5
4 5 6 7 8
8

如对你有帮助,请采纳。点击我回答右上角【采纳】按钮。