请高手们帮忙解决个C++的问题.小弟是刚接触C++的所以请高手们不吝赐教下,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/12 04:37:02
题目是这样的:
BOSS 给你100块钱,让你买100只小鸡,而市场上有单价分别为0.5元,1元和2元的小鸡,请列出你能想像到的组合;如果可能,也请你购买组和的总数.(编程实现) 麻烦各位高手赐教下,小弟谢谢了

楼上的回答都有问题,注意这里小鸡的数量必须是100,并且100块钱可以不用完。

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int half = 0, one = 0, two = 0;
printf("half\tone\ttwo\n");
for (half = 0; half <= 200; half++)
for (one = 0; one <= 100; one++)
for (two = 0; two <= 50; two++)
if (half + one*2 + two*4 <= 200 && half + one + two == 100)
printf("%3d\t%3d\t%3d\n", half, one, two);
return 0;
}

注意小数换算成整数。 共有1751中组合方法。

假设分别为x只,y只,z只,那么
x+y+z=100
0.5x+y+2z=100
解得
x=x
y=100-1.5x
z=0.5x
可知,100>=x>=0,100>=y>=0,100>=z>=0,而且x,y,z都是整数,那么可知x必定是偶数
所以可以知道,x的取值范围是0<=x<=66
所以
int x,y,z;
for(x=0;x<=66;x=x+2)
{
y=100-1.5*x;
z=x/2;
printf("0.5元的小鸡%d只,1元的小鸡%d只,2元的小鸡%d只.\n",x,y,z);
}

main()
{<