任务描述
本关任务:计算百元买百鸡的方案。
相关知识
百元买百鸡问题
假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。
问题分析
对于我们人来说,计算所有的购鸡方案虽然不难,但是很繁琐。而计算机的特性就是:不怕啰嗦,因此我们可以编写一个程序,让计算机来干这些粗活重活。
解决这个问题,最简单的办法就是穷举,举出所有可能的组合,然后从中挑选满足条件的组合。既然要穷举,那就要确定一下穷举的大致范围。
我们用a,b,c来表示小鸡,公鸡,母鸡的数量。
小鸡的价格是5角,那么100元最多能买200只小鸡,但我们只要100只,所以小鸡的数量范围是0 - 100。同理,公鸡的数量范围是0 - 50。而对于母鸡的数量,可以按照前述的方法,也可以利用总量是100只这个条件,即母鸡的数量为100 - a - b。
现在可以开始写代码了,首先我们利用for循环来穷举小鸡的数量:
for(int a = 0;a <= 100;a=a+1) //初始值是0,最大值是100
{
//循环体
}
然后,在每一种小鸡数量的基础上,穷举公鸡的数量,也是使用for循环:
for(int b = 0;b <= 50;b++)
{
//循环体
}
母鸡的数量则直接利用公式求解:
int c = 100 - a - b;
这里有一个问题,那就是a和b的和有可能会**超过100**,所以我们需要通过条件剔除这种情况:
if(c >= 0)
{
//只有c不小于0才进行下一步的判断
}
最后,选出满足条件的组合并输出:
if(a*0.5 + b*2 + c*3 == 100)
{
cout << a << " " << b << " " << c << endl; //输出每种鸡的数量,用空格分隔
}
将上述的代码片段组合在一起,整个程序就完成了。
提示:请仔细思考每段代码之间的相对关系,选择顺序排列或者嵌套组合。
编程要求
请将上述的代码片段组合成一个完整程序,写在右侧编辑器的指定位置。
测试说明
平台会对你编写的代码进行测试:
预期输出:
68 30 2
70 25 5
72 20 8
74 15 11
76 10 14
78 5 17
80 0 20
参考程序:
#include <iostream>
using namespace std;
int main() {
/********** Begin **********/
for (int a = 0; a <= 100; a++) // 穷举小鸡的数量
{
for (int b = 0; b <= 50; b++) // 穷举公鸡的数量
{
int c = 100 - a - b; // 计算母鸡的数量
if (c >= 0) // 确保母鸡的数量不小于0
{
if (a * 0.5 + b * 2 + c * 3 == 100) // 判断总金额是否为100元
{
cout << a << " " << b << " " << c << endl; // 输出每种鸡的数量
}
}
}
}
/********** End **********/
return 0;
}