使用shell编程实现百钱百鸡_C趣味编程百例(11)百钱百鸡问题

本文通过C语言实现解决中国古代数学问题——百钱百鸡问题。通过设立变量和方程,利用穷举法找出所有可能的整数解,展示了如何用编程方法解决这类数学不定方程。
摘要由CSDN通过智能技术生成

C

趣味编程百例

(11)

百钱百鸡问题

36.

百钱百鸡问题

中国古代数学家张丘建在他的

《算经》

中提出了的

"

百钱买百鸡问题

"

鸡翁一,

值钱五,

鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

*

题目分析与算法设计

设鸡翁、鸡母、鸡雏的个数分别为

x,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;

printf("Folleing are possible plans to buy 100 fowls with 100 Yuan.\n");

for(x=0;x<=20;x++) /*

外层循环控制鸡翁数

*/

for(y=0;y<=33;y++) /*

内层循环控制鸡母数

y

0~33

变化

*/

{

z=100-x-y; /*

内外层循环控制下,鸡雏数

z

的值受

x,y

的值的制约

*/

if(z%3==0&&5*x+3*y+z/3==100)

/*

验证取

z

值的合理性及得到一组解的合理性

*/

printf("%2d:cock=%2d hen=%2d chicken=%2d\n",++j,x,y,z);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值