問題解法與思路
程式具體步驟
c++程式
百錢買百雞問題:公雞五文錢乙隻,母雞三文錢乙隻,小雞三隻一文錢,用 100 文錢買 100 隻雞,公雞、母雞、小雞各買多少只?
本程式要求解的問題是:給定乙個正整數 n,用 n 文錢買 n 隻雞,問公雞、母雞、小雞各買多少只?
輸入乙個正整數 n。
如果有解,輸出有多少種解(可以用正整數表示的解)。
如果無解,輸出"no answer."。
首先,該問題最基本的解法就是採用三個for迴圈,顯示這個解法時間複雜度已經達到了可怕的o(n的3次方)。該問題可以簡化為如下兩個基本方程:
消去小雞個數x可得:
對於該式可以進行兩個for遍歷,但是效率仍然很低,時間複雜度為o(n的平方)。
其實,可以發現上式存在規律性。將z從0開始for迴圈,尋找第乙個解。比方說n為100,z取0,可以得到此時(100-07)%4==0,這說明有解,也是第乙個解,而剩下的解,由上式可知,總是比前乙個解要大28,所以由(100-07)/28=3,可知還有3個解,最後可得解的數量為4。該演算法複雜度為o(n)。
第一步,用for迴圈尋找第乙個解,如果找到則跳出迴圈;
第二步,判斷是否找到第乙個解,如果是繼續,如果不是返回"no answer.",並return。
第三步,如果有第乙個解,計算剩下解的數量。
#include int main()
}if(num==0)
num+=(n-7*i)/28;
cout該題目源自
百錢買百雞問題
算經中有這麼一道題,題目很簡單 公雞5文錢乙隻,母雞3文錢乙隻,小雞3只一文錢,用100文錢買一百隻雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢?從數學的角度看這是一道很基礎的三元一次方程,現在我們用程式來解決這個問題,最容易想的的方法就是使用列舉法,把每一種可...
百錢買百雞問題
題目 西元前五世紀,我國古代數學家張丘建在 算經 一書中提出了 百雞問題 雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?題解 設能買雞翁,雞母,雞雛各x,y,z只,根據題意可得 x y z 100 5x 3y z 3 100 化簡可得 x y z 100 15x 9...
百錢買百雞問題
百錢買百雞,100塊要買100隻雞,公雞5塊 母雞3塊 小雞1塊3個,100塊花完 買了100個雞 求有幾種買法,分別買了多少只 公雞母雞小雞 方法一 package com.summer 0416.cn author summer 百錢買百雞,100塊要買100隻雞,公雞5塊 母雞3塊 小雞1塊3...