用python解决N元买N鸡问题

在这里插入图片描述

小明问了我一个问题:

如何用python解决N元买N鸡问题


题目要求:

公鸡每只5元,母鸡每只3元,小鸡1元三只。
N元钱必须刚好买N只鸡,而且鸡必须整只买,不能分开买。
有几种买法呢?

输入格式:

在一行中输入一个正整数N。

输出格式

在一行中输出两个整数c,s。中间用一个空格隔开,表示N元钱买N知己共有c种买法,且所有卖法的公鸡数量之和是s。

Sample Input:

100

Sample Output

4 24

我的代码如下:

n = int(input())
count = 0
s = 0
for x in range(n // 5):
    y = (2 * n - 14 * x) / 8
    z = n - y - x
    if y == int(y) and y >= 0 and z >= 0:
        count += 1
        s += x
if count > 0:
    print(count, s)
else:
    print(0, -1)

我的思路

  1. 看到这个问题第一反应就是使用循环,要先确定取值范围
  2. 首先公鸡的数量肯定要小于N,进一步推进就要小于N//5(理由就是一只公鸡5元)
  3. 两个数学表达式
    x + y + z = N (公鸡,母鸡和小鸡的和应该等于N)
    5x + 3y + z/3 = N
  4. 消去z的话表达式就变成了: 14x + 8y = 2n
  5. 又因为z = n - x - y
  6. 最后判断一下y必须是整数就行了,理由就是公鸡是整数,母鸡也是证书的话那么小鸡也是这个样子的。
  7. 得到结果

学习体会

不是特别难的一个小练习。不过感觉也不是特别好想解决办法。一开始我用的三重循环,不过效果比较一般,换成这种思路的话效率高了一些。每天来一个python小练习保持一下手感。编程能力总是在实战中练习起来的。

加油!!!

你可以的!你总是这样相信着自己!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读