基礎演算法題 百元買百雞

2021-07-11 15:19:48 字數 1322 閱讀 2457

題目:公雞5文錢乙隻,母雞3文錢乙隻,小雞3只一文錢,用100文錢買一百隻雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢。

首先來分析一下:

設公雞為x只,母雞為y只,小雞為z只,可的

x+y+z=100

5x+3y+z/3=100

由於每種雞最少1只,所以公雞最多能有(100 - 3 - 1) / 5只,母雞最多能有(100 - 5 - 1) / 3只

至此我們便可以編碼實現了

// 買公雞最大數量

int gongji = (100 - 3 - 1) / 5;

// 買母雞最大數量

int muji = (100 - 5 - 1) / 3;

// 因為每種雞最少乙隻所以i從1開始

// 公雞的數量

for (int i = 1; i <= gongji; i++) }}

運算結果

以上的**雖然解決了我們的問題,但是在實際的應用中太過於複雜了所以我們可以再次對其進行優化。

從上方的輸出結果中可以得知公雞的數量是4的倍數,母雞的數量為7的遞減,小雞的數量必定是3的倍數。

設公雞為x只,母雞為y只,小雞為z只,可得:

x+y+z=100 ①

5x+3y+z/3=100 ②

解①可得z=100-x-y; ③

將③帶入②可得:

5x+3y+(100-x-y)/3=100;

15x+9y+100-x-y=300;

14x+8y=200;

7x+4y=100;

4y=100-7x;

分析後可將**改進為

// 總共買多少雞花多少錢

intsum = 100;

// 買公雞最大數量

int gongji = (sum - 3 - 1) / 5;

// 因為每種雞最少乙隻所以i從1開始

// 公雞的數量

for (int i = 4; i <= gongji; i += 4)

}

至此,我們變將**的複雜程度從o(n2)優化成了o(n1)

ps:以上如若有錯誤,還望不吝指正。

百元買雞基礎演算法題

已知 公雞5元乙隻 母雞3元乙隻 小雞一元3只 假設現有100元要剛剛好買100隻雞,公雞 母雞 小雞各多少只 從數學求解 設公雞 母雞 小雞為 x y z 以及 x y z 100 5x 3y z 3 100 兩個條件是解不了 這個三元方程的 只能用程式來解 列舉 由於沒有小數 所以公雞最大為 1...

c語言 百元買百雞

問題 中國古代數學家張丘建在他的 算經 中提出了著名的 百錢買百雞問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁 母 雛各幾何?思路先行 第一步 我們首先定義三個變數,即公雞 cock,母雞 hen,小雞 chick。通讀題意,我們可以得知 所謂的 百錢 就是代表 cock ...

72 百元買百雞問題

題目描述 西元前五世紀,我國古代數學家張丘建在 算經 一書中提出了 百雞問題 雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?詳細描述 介面說明 原型 int getresult vector list 輸入引數 無輸出引數 指標指向的記憶體區域保證有效 list 雞...