程序设计思想及范例(6),遍历问题,百钱买百鸡问题

来源:互联网 发布:西南网络教育统考查询 编辑:程序博客网 时间:2024/06/06 03:08
百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。
这是一个古典数学问题,利用现有的数学知识,依然没有办法求解,此问题为具有两个等式和三个未知数的方程组。如何处理这类问题,主要是用到了穷举遍历的方法。

首先,确定x,y,z为正整整。由于鸡的总数为100只,因此x,y,z的取值范围之1~100。其次,根据总的钱数为100,可以进一步确认x,y,z的取值范围。
1) x的取值范围为1~20
2) y的取值范围为1~33
3) z的取值范围为1~100
接下来,遍历x,y,z的所有可能组合:
for(i=1;i<20;i++)
{
for(j=1;j<33;j++)
{
for(k=1;k<100;k++)
{
if(((i*5+j*3+k/3==100)&&((i+j+k)==100)) printf("cock=%d,hen=%d,chicken=%d\n",i,j,k);
}
}
}
由于在整除运算过程中近似处理,将会造成计算误差,因此将
i*5+j*3+k/3==100修改为i*15+j*9+k==300。
程序代码如下:
#include "stdio.h"
#include "math.h"
void main()
{
unsigned int i,j,k,sum,d,a,b,c;
for(i=1;i<20;i++)
{
for(j=1;j<33;j++)
{
for(k=1;k<100;k++)
{/*(i*5+j*3+k/3==100)*/
if(((i*15+j*9+k)==300)&&((i+j+k)==100)) printf("cock=%d,hen=%d,chicken=%d\n",i,j,k);
}
}
}
}
文章出处:http://www.neu.edu.cn/cxsj/pointchart/c10/Page8.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 军改怎么看我该怎么办 改革怎么办我该怎么干 改革怎么看 走留怎么办 腿又粗又弯怎么办 假发发量太多了怎么办 剃了发际线后悔怎么办 在外面遇到坏人抢劫怎么办 请事假单位不批怎么办 捷普请假不批怎么办 钉钉请假不审批怎么办 钉钉请假未审批怎么办 员工事假+工作履责怎么办 员工请事假不批怎么办 哺乳起员工一直请事假怎么办 请公休公司不批怎么办 辞职信交了不批怎么办 辞职年假没有休完怎么办 病假算旷工我该怎么办 辞职信领导不批怎么办 软顶帽子踏顶了怎么办 戴草帽总往下掉怎么办 白鞋子低帮发黄怎么办 跳伞的时候降落伞打不开怎么办 收腹裤穿着总是往下卷怎么办? 结婚打了黑伞怎么办 酷派x7开不了机怎么办 脸书账号被禁用怎么办 文档变成了d盘怎么办? 派派背包满了怎么办 黑裤子掉颜色了怎么办 快递被别人领走怎么办 绒面靴子长霉了怎么办 新买的鞋子开胶怎么办 白色的皮鞋边发黄怎么办 新鞋大拇指顶脚怎么办 耐克标志开胶了怎么办 鞋开胶了怎么办不用胶 gta按home没反应怎么办 gta5线上车没了怎么办 吃了粘壳的鸡蛋怎么办 gta5短信删错了怎么办