出血题
百钱买百鸡:今有钱100元,要买100只鸡,公鸡3元一只,母鸡1元一只,小鸡1元3只,若公鸡、母鸡和小鸡都至少要买1只,请编程求出恰好用完100元钱的所有的买鸡方案。
怎么解啊 用C\C++ 结果是多少
问题点数:20、回复次数:4Top
1 楼steedhorse(晨星)回复于 2005-08-26 10:55:45 得分 4
最简单的办法就是穷举搜索。Top
2 楼steedhorse(晨星)回复于 2005-08-26 10:59:50 得分 0
为什么公的比母的贵啊?不理解。Top
3 楼steedhorse(晨星)回复于 2005-08-26 11:09:45 得分 8
#include <stdio.h>
int main()
{
const int priceOfCock = 3;
const int priceOfHen = 1;
const int priceOf3Chick = 1;
int count = 0;
for(int i = 1; i < 100 / priceOfCock; i++) {
for(int j = 1; j < (100 - priceOfCock * i) / priceOfHen; j++) {
int k = (100 - priceOfCock * i - priceOfHen * j) / priceOf3Chick * 3;
if(100 == i + j + k) {
printf("Solution %d: %d cocks, %d hens and %d chicks\n",
++count, i, j, k);
}
}
}
return 0;
}Top
4 楼megaboy(飞天御剑流之杀神一刀斩)回复于 2005-08-26 11:25:54 得分 8
这实际上是解三元一次方程组嘛,初中生也会做。设公鸡为x,母鸡为y,小鸡为z,方程组如下:
3x+y+1/3z=100
x+y+z=100
化简之后就是:3y+4z=300,是条直线。代码如下:
#include <stdio.h>
int main(void)
{
int x, y, z;
for(y=1; y<100; ++y)
{
for(z=1; z<100; ++z)
{
x = 100-y-z;
if(x > 0 && x < 100 && 3*y+4*z == 300) printf("x=%d, y=%d, z=%d\n", x, y, z);
}
}
return 0;
}Top




