C語(yǔ)言解決百錢(qián)買百雞問(wèn)題
我國(guó)古代數(shù)學(xué)家張丘建在《算經(jīng)》一書(shū)中曾提出過(guò)著名的“百錢(qián)買百雞”問(wèn)題,該問(wèn)題敘述如下:雞翁一,值錢(qián)五;雞母一,值錢(qián)三;雞雛三,值錢(qián)一;百錢(qián)買百雞,則翁、母、雛各幾何?
翻譯過(guò)來(lái),意思是公雞一個(gè)五塊錢(qián),母雞一個(gè)三塊錢(qián),小雞三個(gè)一塊錢(qián),現(xiàn)在要用一百塊錢(qián)買一百只雞,問(wèn)公雞、母雞、小雞各多少只?
題目分析
如果用數(shù)學(xué)的方法解決百錢(qián)買百雞問(wèn)題,可將該問(wèn)題抽象成方程式組。設(shè)公雞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
如果用解方程的方式解這道題需要進(jìn)行多次猜解,計(jì)算機(jī)的一個(gè)優(yōu)勢(shì)就是計(jì)算速度特別暴力并且無(wú)怨無(wú)悔,所以我們可以欺負(fù)她、蹂躪她!因此我們用窮舉法的方式來(lái)解題,需要101^3次猜解,但對(duì)于計(jì)算機(jī)來(lái)說(shuō),小CASE!
代碼清單:
#include <stdio.h> int main() { int i, j, k; printf("百元買百雞的問(wèn)題所有可能的解如下:\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; }
運(yùn)行結(jié)果:
百元買百雞的問(wèn)題所有可能的解如下: 公雞 0 只,母雞 25 只,小雞 75 只 公雞 4 只,母雞 18 只,小雞 78 只 公雞 8 只,母雞 11 只,小雞 81 只 公雞 12 只,母雞 4 只,小雞 84 只
相關(guān)文章
詳解VS2019使用scanf()函數(shù)報(bào)錯(cuò)的解決方法
本文主要介紹了詳解VS2019使用scanf()函數(shù)報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++?LeetCode0547題解省份數(shù)量圖的連通分量
這篇文章主要為大家介紹了C++?LeetCode0547題解省份數(shù)量圖的連通分量示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12C++實(shí)現(xiàn)LeetCode(167.兩數(shù)之和之二 - 輸入數(shù)組有序)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(167.兩數(shù)之和之二 - 輸入數(shù)組有序),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C語(yǔ)言代碼實(shí)現(xiàn)猜數(shù)字游戲
大家好,本篇文章主要講的是C語(yǔ)言代碼實(shí)現(xiàn)猜數(shù)字游戲,感興趣的同學(xué)趕快來(lái)看一看了吧,對(duì)你有幫助的話記得收藏一下2022-01-01C語(yǔ)言修煉之路初識(shí)分支句?循環(huán)助本心下篇
現(xiàn)實(shí)生活中我們經(jīng)常需要根據(jù)不同的條件做出不同的選擇。程序設(shè)計(jì)中也需要根據(jù)條件來(lái)選擇不同的程序進(jìn)行處理,這稱之為分支結(jié)構(gòu),當(dāng)條件表達(dá)式不存在時(shí),它被假設(shè)為真。您也可以設(shè)置一個(gè)初始值和增量表達(dá)式,一般情況下,C?程序員偏向于使用?for(;;)?結(jié)構(gòu)來(lái)表示一個(gè)無(wú)限循環(huán)2022-03-03