#include
main()
{
int nCock;//公鸡数
int nHen;//母鸡数
int nChick;//小鸡数
for(nCock = 0; nCock <= 100 / 5; nCock++)//公鸡数最多不超过100/5只
{
for(nHen = 0; nHen <= (100 - nCock * 5) / 3; nHen++)//母鸡数最多不超过(100元-公鸡数*5)/3
{
//小鸡数=(100元 - 公鸡数*5 - 母鸡数*3)*3
nChick = (100 - nCock*5 - nHen*3) * 3;
//如果公鸡数+母鸡数+小鸡数正好为100只,则此情况为一解
if(nCock + nHen + nChick == 100)
printf("公鸡%d只,母鸡%d只,小鸡%d只\n", nCock, nHen, nChick);
}
}
}
国际最优算法,只用两层循环就行了,而且不用都循环到100
#include
void main()
{
int i,j,k;
for(i=0;i<=20;i++)
for(j=0;j<=33;j++)
{
k=100-i-j;
if(k%3==0&&5*i+3*j+k/3==100)
printf("gongji=%d muji=%d xiaoji=%d\n",i,j,k);
}
}
用纯粹的算术眼光来观察这百鸡题,却是一个普通的混合比例题。因为100只鸡值钱一百文,平均每只就值钱一文。所以就它们损益(即亏盈)的数可以求得混合量的比,再用配分法来分配得下表:
上表应这样理解,若每只公鸡、母鸡都作一文卖,亏损4+2=6(文),
1:1:9.于是依照这连比来把100只鸡分成3份。但是鸡的只数必须是整数,而1+1+9=11,不是100的约数,所以这个连比不适用。另行推求,得3:1:21就对了。
因为3+1+21=25,而25是100的约数,所以
若把混合量的比逐次推求下去,一定还可以得两个适用的连比:2:9:39,8:11:81.按照这些连比计算,就可得另两个答案:公鸡4只,母鸡18只,小鸡78只:或公鸡8只,母鸡11只,小鸡81只。
#include"iostream.h"
#include"iomanip.h"
void main()
{int x,y,z;
long k(0);
cout<<" x y z"<
for(y=0;y<100;y++)
for(z=0;z<100;z++)
{k++;
if(((5*x+3*y+z/3)==100&&((x+y+z)==100))
cout<
这是用最简单C语言编出来的,相信你是一个初学者,这个程序还可以更简单,好好学,加油!