第一天 百钱百鸡问题
1.问题描述
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
2. 问题分析
用百钱如果只买公鸡,最多可以买20只,但题目要求买一百只,由此可知,所买公鸡的数量肯定在0~20之间。同理,母鸡的数量在0~33之间。在此把公鸡、母鸡和小鸡的数量分别设为cock、hen、chicken,则cock+hen+chicken=100,因此百钱买百鸡问题就
[cock+ hen+chicken=100
转化成解不定方程组
的问题了。5xcock+3x hen+chicken
-100
C语言趣味编程100例
3.算法设计
对于不定方程组,我们可以利用穷举循环的方法来解决,也就是通过对未知数可变范
围的穷举,验证方程在什么情况下成立,从而得到相应的解。因公鸡的取值范围是0~20, 可用语句 for(cock=0;cock<=20;cock++);实现。钱的数量是固定的,要买的鸡的数量也是固定的,所以母鸡数量是受到公鸡数量限制的,同理,小鸡数量受到公鸡和母鸡数量的限制,因此我们可以利用三层循环的嵌套来解决:第一层循环控制公鸡的数量,第二层控制母鸡的数量,最内层控制小鸡的数量。
代码实现:
#include<iostream>
using namespace std;
int main() {
int i, j,t=0;
for (i = 0; i < 20; i++) {
for (j = 0; j < 33; j++) {
if ((100 - 5 * i - 3 * j) * 3 == (100 - i - j)) {
cout <<"cock=" i <<"," <<"hen="<< j <<",chicken=" << (100 - i - j)<<endl;
break;
}
}
}
}

浙公网安备 33010602011771号