python 使用循环和列表推导式两种方法求解百钱买百鸡问题,假设大鸡5 元一只,中鸡 3元一只,小鸡1元三只,现有100元钱想买 100只鸡,有多少种买法?
时间: 2024-04-17 16:17:13 浏览: 23
这道题可以使用循环和列表推导式两种方法求解。
方法一:使用循环
```python
count = 0 # 记录方案数
for i in range(0, 21): # 大鸡最多买20只
for j in range(0, 34): # 中鸡最多买33只
k = 100 - i - j # 小鸡的数量
if k % 3 == 0 and 5 * i + 3 * j + k / 3 == 100: # 如果满足条件
count += 1 # 计数器加1
print("方案%d:" % count, "大鸡%d只,中鸡%d只,小鸡%d只" % (i, j, k))
```
方法二:使用列表推导式
```python
result = [(i, j, 100 - i - j) for i in range(0, 21) for j in range(0, 34) if (100 - i - j) % 3 == 0 and 5 * i + 3 * j + (100 - i - j) / 3 == 100]
count = len(result)
for i, r in enumerate(result):
print("方案%d:" % (i + 1), "大鸡%d只,中鸡%d只,小鸡%d只" % r)
```
两种方法的输出结果都是:
```
方案1: 大鸡0只,中鸡25只,小鸡75只
方案2: 大鸡4只,中鸡18只,小鸡78只
方案3: 大鸡8只,中鸡11只,小鸡81只
方案4: 大鸡12只,中鸡4只,小鸡84只
```