【python基础刷题--9.鸡兔同笼】

本文分析了鸡兔同笼问题的解题代码,包括原始的法1和针对法1的优化法2。核心思路是遍历可能的兔子和鸡组合,通过逻辑判断输出答案或IMPOSSIBLE。优化在于将have=0的判断移到循环外,提高效率。
部署运行你感兴趣的模型镜像

题目

鸡兔同笼
在这里插入图片描述

Code

-法1

M,N=map(int,input().split())
have=0  #用这个排除可以算出来的情况进入impossible那块
for i in range(M+1):
    if 2*i+4*(M-i)==N:
        have=1
        print(str(i)+' '+str(M-i))
    if have==0:
        while i == M:
            print("IMPOSSIBLE")
            i+=1 #跳出循环

代码解析

核心思路是使用一个循环遍历所有可能的情况,然后检查是否存在满足条件的结果。首先接受用户输入的两个数字 M 和 N,并将其转换成整数。
然后使用一个 for 循环遍历 i 从 0 到 M 的所有可能取值,对于每个 i,计算 2i+4(M-i) 的结果,与 N 进行比较。
–>如果相等则输出 i 和 M-i,并将 have 设为 1 表示找到了解决方案。
–>如果没有找到满足条件的解决方案,并且循环结束了,have 仍然为0,那么说明没有找到解决方案,就输出"IMPOSSIBLE"。

在这段代码中,还存在一个问题。在判断 have 是否为 0 的时候是放在了 for 循环内部,这就会导致每次循环都会重置 have 的值。可以将对 have 的判断放在循环之外,确保所有循环结束后再进行判断。见法2的代码优化。

-法2(针对法1的代码优化)

M,N=map(int,input().split())
have=0
for i in range(M+1):
    if 2*i+4*(M-i)==N:
        have=1
        print(str(i)+' '+str(M-i))
        break
if have==0:
    print("IMPOSSIBLE")

代码解析

  • 把have==0的判断放在for循环外,如果遍历完还没有找到可以print的值,那么就说明无解了,就可以直接输出impossible了!
  • 还有一点,就是可以在print结果的后面加一行break,只要找到了后面的情况就不用再循环算了

解题思路

这道题没有什么特殊高级的地方,就是用简单的功能循环+条件功能,重点就是你要理好逻辑以及程序的步骤就可以了。

奇技淫巧

  1. 什么时候才要输出‘IMPOSSIBLE’?怎么设计?
    –>可以增加一个have变量,如果已经可以print值了,就把它置1,然后在循环结束后,就不会执行impossible的代码了

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值