刷题(十一)

题目

小明有一百元,他想买一百本书,英语书5元一本,数学书3元一本,语文书0.5元一本,请问他有多少种买法?
请编程解决这个问题,可以使用任何编程语言,包括伪语言

分析

小明有100元,三本书的价格分别是5元,3元,0.5元,那么最多能买到的英语书为20本,数学书为33本,语文书为200本。题目要求用100元买100本书,钱不一定花完,只要买够100本书就行
因此,可以通过一个三重for循环来实现,i, j, e分别代表购买英语、数学、语文书的数量,循环条件分别是 i <= 20, j <= 33, e <= 200,那么只要满足 i + j + e = 100, 5 * i + 3 * j + 0.5 * e <= 100即可
最后统计所有的组合就是买法的数量

代码实现

n = 0
#最大买20本英语书,i表示买中文书的数量
for i in range(21):
    #最大买33本数学书,j表示买数学书的数量
    for j in range(34):
        #最大买200本语文书,e表示语文书的数量
        for e in range(201):
            if 5 * i + 3 * j + 0.5 * e <= 100 and i + j + e == 100:
                n += 1

print(n)
posted @ 2020-05-02 16:54  cnhkzyy  阅读(222)  评论(0编辑  收藏  举报