百钱百鸡的python算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百钱百鸡的python算法相关的知识,希望对你有一定的参考价值。

问题描述
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百
钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一
钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
问题分析
用百钱如果只买公鸡,最多可以买20只,但题目要求买100只,由
此可知,所买公鸡的数量肯定在0~20之间。同理,母鸡的数量在0~
33之间。在此不妨把公鸡、母鸡和小鸡的数量分别设为cock、hen、
chicken,则cock+hen+chicken=100,因此百钱买百鸡问题就转化成解
不定方程组
if __name__=="__main__":
# cock表示公鸡数量,hen表示母鸡数量,chicken表示小鸡数量,总共100只
外层循环控制公鸡数量取值范围为
# 外层循环控制公鸡数量取值范围为0~20
cock = 0
while cock <= 20:
# 内层循环控制母鸡数量取值范围为0~33
hen = 0
while hen <= 33:
#内层循环控制小鸡数量取值范围为0~100
chicken = 0
while chicken <= 100:
# 条件控制
if (5 * cock + 3 * hen + chicken / 3.0 ==100) and (cock + hen
+ chicken ==100):
print("cock=%2d,hen=%2d,chicken=%2d\n" %(cock,hen,chicken))
chicken += 1
hen += 1
cock += 1
这段代码是一个Python程序,它解决了一个与计算鸡、母鸡和公鸡的数量有关的问题,因为总共有100只鸟,总成本为100元。下面是代码的工作原理:
行if __name__==“__main__”:是一个条件语句,用于检查脚本是否作为主程序执行。如果是,则将执行以下代码块。
变量cock、hen和chicken分别表示公鸡、母鸡和鸡的数量。问题表明总共有100只鸟,因此这些变量必须满足方程公鸡+母鸡+鸡=100。
最外面的while循环遍历cock的所有可能值,从0到20。这是因为问题表明最多可以有20只公鸡。
第二个while循环嵌套在外部循环中,并迭代所有可能的值,从0到33。这是因为问题表明最多可以有33只母鸡。
第三个while循环嵌套在第二个循环中,并迭代鸡的所有可能值,从0到100。这是因为问题没有指定鸡的最大数量。
if语句检查公鸡、母鸡和鸡的当前值是否满足问题中指定的两个条件:鸟类总数为100只,总成本为100元。如果两个条件都满足,则公鸡、母鸡和鸡的当前值将打印到控制台。
鸡+=1、母鸡+=1和公鸡+=1行位于最里面的循环内,并在循环的每次迭代中将鸡、母鸡和公鸡的值增加1。
总的来说,这段代码实现了一种暴力算法,它迭代公鸡、母鸡和鸡的所有可能组合,并检查每个组合是否满足给定条件。当找到满足条件的组合时,它将打印到控制台。
参考技术A for cock in range(1,20+1):
    for hen in range(1,33+1):
        for biddy in range(1,99+1):
            if (5*cock+3*hen+biddy/3)==100:
                if (cock+hen+biddy)==100:
                    if biddy%3==0:
                        print cock,hen,biddy

你也没给价格,这个解答是假设公鸡5块,母鸡3块,小鸡3只1块


*转自互联网


Python3编译的话记得把print换成函数

追问

你是python的大神么?

追答

这种程序不需要多神就能写吧。。。。。。

本回答被提问者和网友采纳

C语言程序设计百钱买百鸡(百钱百鸡,百鸡问题)!

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

 

实现过程:

使用 for 语句对 3 种鸡的数嫌在事先确定好的范围内进行穷举并判断,对满足条件的 3 种鸡的数量按指定格式输出,否则进行下次循环。

 

程序代码如下:

#include <stdio.h>

int main()



    int cock,hen,chick;  /*定义变童为基本整型*/

    for(cock=0;cock<=20;cock++)  /*公鸡范围在 0~20 之间*/

    for(hen=0;hen<=33;hen++)  /*母鸡范围在 0~33 之间*/

    for(chick=3;chick<=99;chick++)  /*小鸡范围在 3~99 之间*/

    if(5*cock+3*hen+chick/3==100)  /*判断钱数是否等于 100*/

    if(cock+hen+chick==100)  /*判断购买的鸡数是否等于 100*/

    if(chick%3==0)  /*判断小鸡数是否能被 3 整除*/

    printf("公鸡:%d,母鸡:%d,小鸡:%d\\n",cock,hen,chick);

    return 0;

 

运行结果:

公鸡:0,母鸡:25,小鸡:75

公鸡:4,母鸡:18,小鸡:78

公鸡:8,母鸡:11,小鸡:81

公鸡:12,母鸡:4,小鸡:84

 

技术要点:

根据题意设公鸡、母鸡和雏鸡分别为 cock、hen 和 chick。

    ✪ 如果 100 元全买公鸡,那么最多能买 20 只,所以 cock 的范围是大于等于 0 且小于等于 20;

    ✪ 如果全买母鸡,那么最多能买 33 只,所以 hen 的范围是大于等于 0 且小于等于 33;

    ✪ 如果 100 元钱全买小鸡,那么最多能买 99 只(根据题意小鸡的数量应小于 100 且是 3 的倍数)。

在确定了各种鸡的范围后进行穷举并判断,判断的条件有以下 3 点:

        (1) 所买的 3 种鸡的钱数总和为 100。

        (2) 所买的 3 种鸡的数量之和为 100。

        (3) 所买的小鸡数必须是 3 的倍数。

不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

值得关注】我的 编程学习交流俱乐部

以上是关于百钱百鸡的python算法的主要内容,如果未能解决你的问题,请参考以下文章

Python每日一练——第4天:百钱百鸡问题(升级版)

百钱百鸡,用高中数学优化算法

算法百钱百鸡

python——百钱百鸡题

PHP/Python---百钱百鸡简单实现及优化

Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)