1. 程式人生 > >一次迴圈實現百雞百錢問題

一次迴圈實現百雞百錢問題

問題描述:

我國古代數學家張丘建在《張丘建算經》一書中提出了“百雞問題”:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?

題目分析與演算法設計:

設雞翁、雞母、雞雛分別為x、y、z,則可等到一下兩個方程式:

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

x+y+z=100

用x分別表示y和z,可以得到:y=(100 - 7 * x) / 4,z=(300 + 3 * x) / 4,並且x和y均為0至100間的整數。由於y不小於零,可以得到x<15.

所以只需對x進行15次迴圈即可得到所有的購買組合:

public class Test {

	public static void main(String[] args) {

		for (int x = 0; x < 15; x++) {
			int y = (100 - 7 * x) % 4;
			int z = (300 + 3 * x) % 4;
			if (y == 0 && z == 0) {
				int hen = (100 - 7 * x) / 4;
				int chi = (300 + 3 * x) / 4;
				System.out.println("公雞:" + x + "只, 母雞:" + hen
						+ "只, 小雞:" + chi + "只");
			}
		}
	}
}
輸出結果:

公雞:0只, 母雞:25只, 小雞:75只
公雞:4只, 母雞:18只, 小雞:78只
公雞:8只, 母雞:11只, 小雞:81只
公雞:12只, 母雞:4只, 小雞:84只