第4章-15 换硬币 (20 分)【计算思维】

原题链接

本题是计算思维的很好的例子,不要想着去找出一个算法,得到结果,而是让计算机去模拟整个换硬币的过程,比如说,给定的是14,则先将其全部换成5,可以换为2个5,还剩13-2*5 = 4,再将剩下的4换成最多的2,可以换2个2,但是此时,还剩下0元,换不成1了,所以不能将换完了5之后剩下的4全部换成2,而是换成1个2,还剩下2元,再换成两个1。
即让计算机去模拟这个过程。

代码

x,cnt = eval(input()),0
for cnt5 in range(x//5,0,-1):
    for cnt2 in range((x-5*cnt5)//2,0,-1):
        for cnt1 in range((x-5*cnt5-2*cnt2),0,-1):
            if 5*cnt5+2*cnt2+cnt1 == x:
                print("fen5:{}, fen2:{}, fen1:{}, total:{}".\
                    format(cnt5,cnt2,cnt1,cnt5+cnt2+cnt1))
                cnt += 1
print("count = {}".format(cnt))

代码中,自动保证了cnt5、cnt2、cnt1都不为0,如果5cnt5+2cnt2+cnt1等于x,则找到一个结果,输出即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值