首页 > 编程笔记

百钱买百鸡问题(C语言版)

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?

翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

分析

如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。设公鸡 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>

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;
}
运行结果:

百元买百鸡的问题所有可能的解如下:
公鸡  0 只,母鸡 25 只,小鸡 75 只
公鸡  4 只,母鸡 18 只,小鸡 78 只
公鸡  8 只,母鸡 11 只,小鸡 81 只
公鸡 12 只,母鸡  4 只,小鸡 84 只

优秀文章

添加微信咨询 扫码添加管理员微信 扫码添加管理员微信
微信ID:biancheng_yan