免费,Python蓝桥杯等级考试真题--第18级(含答案解析和代码)

Python蓝桥杯等级考试真题–第18级

一、 选择题

在这里插入图片描述
答案:A
解析:n=10,10%2==0,所以输出(10//210+5)=(510+5)=55,故答案为A。
在这里插入图片描述
答案:B
解析:n=5,i=(2到5),a1=a+i=1+2=3,a2=3+3=6,a3=6+4=10,a4=10+5=15,故答案为B。

在这里插入图片描述
答案:B
解析:输入n=9,进入第一次循环,9%30,n=9//3=3,出循环i=1,
进入第二次循环,3%3
0,n=3//3=1,出循环,i=1+1=2,故答案为B

二、编程题

在这里插入图片描述
【参考程序】

def min_cost(n):
    # 铅笔包装信息
    packages = [(1, 1, float('inf')), (5, 5, 2), (10, 9, 2), (50, 44, 3), (100, 86, 5)]
    
    # 动态规划表,dp[i]表示买i支铅笔的最小花费
    dp = [float('inf')] * (n + 1)
    dp[0] = 0  # 买0支铅笔的花费是0
    
    # 枚举每一种包装的铅笔
    for quantity, price, stock in packages:
        # 根据库存限制,最多能买多少包这种包装的铅笔
        max_bundles = (n // quantity) if stock == float('inf') else min(n // quantity, stock)
        
        # 更新dp表
        for i in range(quantity, n + 1):
            for j in range(1, max_bundles + 1):
                current_cost = dp[i - j * quantity] + j * price
                if current_cost < dp[i]:
                    dp[i] = current_cost
    
    return dp[n]

# 示例输入
n = int(input())
# 调用函数并输出结果
print(min_cost(n))

解析:首先定义了一个列表packages来存储每种包装的铅笔数量、整包价格和库存数量。接着,使用动态规划的方法来计算购买特定数量铅笔的最小花费。dp列表初始化为float(‘inf’),表示初始时买任意数量的铅笔的花费都是无穷大,除了买0支铅笔的花费为0。然后,对于每一种包装的铅笔,根据其数量、价格和库存,计算能够购买的数量范围,并更新dp表中的最小花费。最后返回dp[n]即为购买n支铅笔的最小花费。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值