百鸡问题: 鸡公3元一只,鸡婆1元一只,鸡仔1元3只,请列出用100元钱买100只鸡的各种可能。
问题分析:
先用方程的形式表达一下,设买了x只鸡公,y只鸡婆,z只鸡仔,则有下面的方程式:
x+y+z=100
3x+y+1/3z=100 转化为->9x+3y+z=300
下面我们就用编程语言来帮我们计算到底有几种可能性呢,鸡公,鸡婆,鸡仔的个数分别是多少只呢?
我们还需要考虑到:
1)若用100块全部买鸡公的话,最多只能买33只,所以上面的cock的最大值应该是33,取值范围[0,33]
2)若用100块全部买鸡婆的话,做多可以买100只,取值范围[0,100]
3)鸡仔的取值范围也应该在[0,100]之间。
再加上上面的方程,代码如下:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int cock,hen,chick;//先分别定义3个变量,表示鸡公,鸡婆,鸡仔的只数
int num = 0;
for(cock = 0;cock <= 33;cock++)
{
for(hen = 0;hen <= 100;hen++)
for(chick = 0;chick <= 100;chick++)
{
if((cock + hen + chick == 100)&&(9*cock + 3*hen + chick == 300))
{
num++;
printf("\n==================\n第%d组:\n",num);
printf("公鸡:%d只\t\t母鸡:%d只\t\t鸡仔:%d只\n",cock,hen,chick);
}
}
}
system("pause");
return 0;
}
总共可以有26组,输出结果如下: