算法-經典趣題-百錢買百雞


一、問題

百錢買百雞是一個非常經典的不定方程問題,最早源於我國古代的《算經》,這是古代著名數學家張丘建首次提出的。百錢買百雞問題的原文如下:

雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何?

這個問題的大致意思是公雞5文錢1只,母雞3文錢1只,小雞3只1文錢,如果用100文錢買100只雞,那么公雞、母雞和小雞各應該買多少只呢?

二、分析

百錢買百雞問題中,有三個變量:公雞數量、母雞數量和小雞數量,分別設為x、y和z。這三者應該滿足如下關系:x+y+z=1005x+3y+z/3=100這里有三個變量,兩個方程,因此是一個不定方程問題。這將導致求解的結果不只一個。可以根據上述兩個方程來求出所有可能的結果。

三、編程

package com.joshua317;

public class Bqbj {
    public static void main(String[] args) {
        int n = 100;
        int m = 100;
        getBqbj(n,m);
    }
    /**
     * 百錢買百雞
     * @param  n 數量
     * @param  m 錢數
     */
    public static void getBqbj(int n, int m) {
        int x, y, z;
        for (x = 0; x <= n; x++) {
            for (y = 0; y <= n; y++) {
                z = n - x -y;
                if (z > 0 && z%3 == 0 && 5*x+3*y+z/3 == m) {
                    System.out.println("x = " + x + ", y = " + y + ", z=" + z);
                }
            }
        }
    }
}

結果為:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM