C語言百錢買百雞問題(詳解版)

2020-07-16 10:04:32
我國古代數學家張丘建在《算經》一書中曾提出過著名的“百錢買百雞”問題,該問題敘述如下:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?

翻譯過來,意思是公雞一個五塊錢,母雞一個三塊錢,小雞三個一塊錢,現在要用一百塊錢買一百隻雞,問公雞、母雞、小雞各多少隻?

題目分析

如果用數學的方法解決百錢買百雞問題,可將該問題抽象成方程式組。設公雞 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 只