蓝桥杯备赛第一轮训练

174:付账问题

n, s = map(int, input().split())
exp = sorted(list(map(float, input().split())))
ave = s / n
sat = 0
for i in range(n):
    # 检查当前的人的花费乘以包括当前消费者以后的客户的人数是否小于等于预算s
    if exp[i] * (n - i) <= s:
        # 如果是真的,更新sat,添加当前花费与平均值之间的差的平方
        sat += (exp[i] - ave) ** 2
        # 更新预算,减去当前花费
        s -= exp[i]
    else:
        # 如果是假的,计算预算除以剩余人数的平均值,并更新sat,添加这个平均值与平均值之间的差的平方乘以剩余人数
        sat += (s / (n - i) - ave) ** 2 * (n - i)
        break
print("%.4f" % (sat / n) ** (1 / 2))

思路:对输入的消费记录排序,穷的先付帐,当当前的预算不足以让下一个人付账时就是最小标准差

502:成绩分析

n = int(input())
exam = [0] * n
ok = 0
unok = 0

for i in range(n):
    exam[i] = int(input())
    if exam[i] >= 60:
        ok += 1
    if exam[i]>=85:
        unok += 1
ansok = round((ok / n)*100)
ansunok = round((unok / n)*100)
print(str(ansok) + '%')
print(str(ansunok) + '%')

思路:暴力枚举

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值