您当前的位置:首页 > 计算机 > 编程开发 > C语言

百钱百鸡问题

时间:01-03来源:作者:点击数:

我国古代数学家张丘建在《算经》中提出了著名的“百钱百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?”意思是说:一只公鸡卖5枚钱,一只母鸡卖3枚钱,三只小鸡卖1枚钱,用100枚钱买100只鸡,能买到公鸡、母鸡、小鸡各多少只?

分析:

① 这是一个不定方程问题。有3个未知数,2个方程:设公鸡、母鸡、小鸡数分别为i、j、k,则有i+j+k=100,i*5+j*3+k/3=100。需要让计算机去一一测试是否符合条件,找出所有可能的答案。由于价格的限制,如果只是一种鸡,则公鸡最多为19只(由于共100只鸡的限制,不能等于20只),母鸡最多33只,小鸡最多99只。

② 这里用到的是穷举算法。穷举算法的基本思想是:对问题的所有可能答案一一测试,直到找到正确答案或测试完全部可能的答案。

程序如下:

main( ) 
{ 
 int i,j,k; 
 for(i=1;i<=19;i++) 
 for(j=1;j<=33;j++) 
 for(k=3;k<=99;k=k+3) 
 { if((i+j+k==100)&&(i*5+j*3+k/3==100)) 
 printf("i=%d,j=%d,k=%d\n",i,j,k); 
 } 
}

运行结果为:
         i=4,j=18,k=78
         i=8,j=11,k=81
         i=12,j=4,k=84

请思考:还有没有别的编程方法?

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门