A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 认真的雪 中级黑马   /  2015-10-8 20:23  /  874 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,我国现代非著名教师也在大学时期一次家教的过程中,被同样的小学五年级问题难倒T_T。。。

该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?(咳咳,介个用人类的语言给大家解释下,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?)

题目分析:

如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。设公鸡x只,母鸡y只,小鸡z只,得到以下方程式组:

A:5x+3y+1/3z = 100
B:x+y+z = 100
C:0 <= x <= 100
D:0 <= y <= 100
E:0 <= z <= 100

如果用解方程的方式解这道题需要进行多次猜解,计算机的一个优势就是计算速度特别暴力并且无怨无悔,所以我们可以欺负她、蹂躏她!因此我们用穷举法的方式来解题,需要101^3次猜解,但对于计算机来说,小CASE!



/*****************************/
/**     百钱买百鸡问题     **/

/*****************************/
#include <stdio.h>
#include <string.h>

int main()
{
    int i, j, k;

    printf("百元买百鸡的问题所有可能的解如下:\n");

    for( i=0; i <= 100; i++ )
        for( j=0; j <= 100; j++ )
            for( k=0; k <= 100; k++ )
            {
                if( 5*i+3*j+k/3==100 && k%3==0 && i+j+k==100 )
                {
                    printf("公鸡 %2d 只,母鸡 %2d 只,小鸡 %2d 只\n", i, j, k);
                }
            }

    return 0;
}

1 个回复

倒序浏览
这题好难
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马