C语言:百钱百鸡问题
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?设鸡翁、鸡母、鸡雏的个...
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程:5x+3y+z/3=100;x+y+z=100
所以此问题可归结为求这个不定方程的整数解。
求指导谢谢。。 展开
设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程:5x+3y+z/3=100;x+y+z=100
所以此问题可归结为求这个不定方程的整数解。
求指导谢谢。。 展开
1个回答
展开全部
#include<stdio.h>
void main(){
int cockNum; //定义公鸡的数量,也就是鸡翁的数量
int henNum; //定义母鸡的数量,也就是鸡母的数量
int chickenNum; //定义小鸡的数量,也就是雏鸡的数量
int count = 0; //定义输出结果的编号
//公鸡100文钱能买100 / 5 = 20只
for (cockNum = 0; cockNum <= 20; cockNum++) {
//母鸡100文钱 能买100 / 3 = 33只,还多1文
for (henNum = 0; henNum <= 33; henNum++) {
//三种鸡的只数总和是100只,故只要确定公鸡和母鸡的只数,就能确定小鸡的只数
chickenNum = 100 - cockNum - henNum;
//三种鸡的总价格是100文,故以此为条件分别输出所有鸡的只数
if (5 * cockNum + 3 * henNum + chickenNum / 3.0 == 100) {
count++; //输出结果的编号自增
printf("%d.公鸡的数量是:%d只,母鸡的数量是:%d只,小鸡的数量是:%d只。\n",count,cockNum,henNum,chickenNum);
}
}
}
}
void main(){
int cockNum; //定义公鸡的数量,也就是鸡翁的数量
int henNum; //定义母鸡的数量,也就是鸡母的数量
int chickenNum; //定义小鸡的数量,也就是雏鸡的数量
int count = 0; //定义输出结果的编号
//公鸡100文钱能买100 / 5 = 20只
for (cockNum = 0; cockNum <= 20; cockNum++) {
//母鸡100文钱 能买100 / 3 = 33只,还多1文
for (henNum = 0; henNum <= 33; henNum++) {
//三种鸡的只数总和是100只,故只要确定公鸡和母鸡的只数,就能确定小鸡的只数
chickenNum = 100 - cockNum - henNum;
//三种鸡的总价格是100文,故以此为条件分别输出所有鸡的只数
if (5 * cockNum + 3 * henNum + chickenNum / 3.0 == 100) {
count++; //输出结果的编号自增
printf("%d.公鸡的数量是:%d只,母鸡的数量是:%d只,小鸡的数量是:%d只。\n",count,cockNum,henNum,chickenNum);
}
}
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询