![](https://i-blog.csdnimg.cn/blog_migrate/dcba64d65d825eacc97f8a860ccd71bb.png)
思路:设公鸡数为cock,母鸡数为hen,小鸡数为chick(cock、hen、chick为整数),遍历法解5cock+3hen+chick/3=100,且cock+hen+chick=100的方程。
算法一:这个是最笨的方法,根据cock、hen、chick可能的组合全部遍历,看哪些符合方程条件,运算步骤上万步。
#include <stdio.h>
int main()
{
int cock,hen,chick;//定义变量公鸡,母鸡,小鸡
for(cock=0;cock<=20;cock++)//公鸡可能的数量遍历
for(hen=0;hen<34;hen++)//母鸡可能的数量遍历
for(chick=0;chick<100;chick=chick+3)//小鸡可能的数量遍历
{
if((cock+hen+chick==100)&&(cock*5+hen*3+chick/3==100))//符合题2要求后输出
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",cock,hen,chick);
}
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/f40630d97a40f5603179bb44765ffb2d.png)
#include <stdio.h>
int main()
{
int cock,hen,chick;//定义变量公鸡,母鸡,小鸡
for(cock=0;cock<=20;cock++)//公鸡可能的数量遍历
for(chick=0;chick<=100-cock;chick=chick+3)//小鸡数是3的倍数且不可能大于100-公鸡数
{
hen=100-cock-chick;//母鸡数是100-公鸡-小鸡数
if(cock*5+hen*3+chick/3==100)//符合题2要求后输出
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",cock,hen,chick);
}
return 0;
}
算法三:设法一个循环解决问题,通过5cock+3hen+chick/3=100得出15cock+9hen+chick=300,再因chick=100-cock-hen,得出15cock+9hen+(100-cock-hen)=300,进而得出14cock+8hen=200再得出7cock+4hen=100(x和y都是整数)。通过先用数学方法的简化,运算步骤减至几十步。
#include <stdio.h>
int main()
{
int cock,hen,chick;//定义变量公鸡,母鸡,小鸡
for(cock=0;cock<15;cock++)//根据7cock+4hen=100,得出cock小于15
if((100-cock*7)%4==0)//此条表示7cock+4hen成立且cock和hen都是整数,符合条件
{
hen=(100-cock*7)/4;
chick=100-cock-hen;
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",cock,hen,chick);
}
return 0;
}