C趣味编程百例(11)百钱百鸡问题

C趣味编程百例(11)百钱百鸡问题,第1张

C趣味编程百例(11)百钱百鸡问题,第2张

36.百鸡百元问题
中国古代数学家张秋俭在他的《计算经》中提出了“百鸡百元问题”:鸡翁一,值五,鸡母一,值三,鸡雏三,值一,百鸡百元。求翁、母、雏几何?
*题目分析及算法设计
设公鸡、母鸡、小鸡的个数分别为x、y、z、y、z。根据题目的意思,买几百只鸡总共需要100元。如果买的都是公鸡,最大数量是20,显然x的值在0到20之间;同样,当y的取值范围为0 ~ 33时,可以得到以下不定方程:
5x+3y+z/3 = 100
x+y+z = 100
。所以这个问题可以归结为求这个不定方程的整数解。
编程求解不定方程不同于手工计算。在分析确定方程中未知量的可变范围的前提下,我们可以穷尽未知量的可变范围来验证方程在什么条件下成立,进而得到相应的解。
*程序描述和注释
# include
void main()
{
int x,y,z,j = 0;下面是用100元买100只鸡的可能计划。\ n ");
for(x = 0;x为(y = 0;y {
z = 100-x-y;/*在内外循环的控制下,小鸡数Z的值受x,y */
if的值限制(Z % 3 = = 0 & & 5 * x+3 * y+Z/3 = = 100)
/*验证取Z值的合理性得到一套解*/
}
}
*运行结果
以下是100元买100只鸡的可能方案。
1:公鸡= 0母鸡= 25鸡= 75
2:公鸡= 4母鸡= 18鸡= 78
3:公鸡= 8母鸡= 11鸡= 81
4:公鸡= 12母鸡= 4鸡= 84
*总是进一步讨论
这种解决方案是不确定的。能否根据题目更合理地设置循环控制条件,以减少这种穷举和组合的次数,提高程序的执行效率,请考虑。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C趣味编程百例(11)百钱百鸡问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情