python解决鸡兔同笼
鸡兔同笼
【问题描述】
利用 input()语句先后输入两个正整数,分别代表鸡兔的头和脚的总数。其 中,兔有四只脚,鸡有两只脚,都只有一个头。 请编写 Python 代码计算出兔和鸡的数量,输出结果形如“Chicken=15 Rabbit=5”,如没有解则输出“No solution!”。
【输入描述】 分两次输入,第一次输入头的总数,回车后输入脚的总数。 特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输 入时所有 input()函数不可有提示信息。
【输出描述】 如果有解,则输出鸡和兔分别数量,形如“Chicken=15 Rabbit=5”Rabbit 之前有 1 个英文半角空格,C 和 R 都为大写。 如没有解则输出“No solution!”,No 之后有 1 个英文半角空格,solution 之后有英文半角叹号。 特别提示:注意字母大小写以及空格、叹号等匹配一致。
【样例输入 1】
20
50
【样例输出 1】
Chicken=15 Rabbit=5
【样例输入 2】
20
30
【样例输出 2】
No solution
可以使用枚举法来解决“鸡兔同笼”问题。通过枚举鸡的数量,计算对应的兔的数量,然后判断脚的总数是否匹配。以下是用枚举法实现的代码:
# 输入头的总数 heads = int(input()) # 输入脚的总数 legs = int(input()) # 初始化解的标志 solution_found = False # 枚举鸡的数量,从 0 到头的总数 for chickens in range(heads + 1): rabbits = heads - chickens # 计算兔的数量 total_legs = 2 * chickens + 4 * rabbits # 计算脚的总数 # 检查脚的总数是否匹配 if total_legs == legs: print(f"Chicken={chickens} Rabbit={rabbits}") solution_found = True break # 找到解后可以退出循环 # 如果没有找到解,输出“No solution!” if not solution_found: print("No solution!")
使用
input()
读取头数和脚数。使用一个循环枚举所有可能的鸡的数量,从 0 到头的总数。
根据鸡的数量计算兔的数量,并计算对应的脚的总数。
如果脚的总数与输入的脚数匹配,输出鸡和兔的数量,并设置标志
solution_found
为True
,然后退出循环。如果循环结束后未找到解,输出“No solution!”。
方法二:
可以使用 Python 编写程序来解决“鸡兔同笼”问题。根据输入的头数和脚数,可以通过简单的数学公式来计算鸡和兔的数量。以下是实现的代码:
# 输入头的总数 heads = int(input()) # 输入脚的总数 legs = int(input()) # 设鸡的数量为 x,兔的数量为 y # 由题意可得两个方程: # 1. x + y = heads (头的总数) # 2. 2x + 4y = legs (脚的总数) # 可以将方程变形为: # x = heads - y # 代入第二个方程: # 2(heads - y) + 4y = legs # 2heads + 2y = legs # 2y = legs - 2heads # y = (legs - 2heads) / 2 # 计算兔的数量 rabbits = (legs - 2 * heads) / 2 # 计算鸡的数量 chickens = heads - rabbits # 检查是否为非负整数解 if rabbits >= 0 and chickens >= 0 and rabbits.is_integer() and chickens.is_integer(): print(f"Chicken={int(chickens)} Rabbit={int(rabbits)}") else: print("No solution!")
使用
input()
读取头数和脚数。根据方程组推导出兔子和鸡的数量。
检查计算结果是否为非负整数,如果是,则输出鸡和兔的数量;如果没有解,则输出“No solution!”。
- 上一篇:python删除列表中字符串
- 下一篇:c++解决鸡兔同笼问题