7-6 鸡群的怜悯 (10分)
有一只公鸡年老色衰,体力也大不如前。为了保持配种的成功率,农夫买回一只小公鸡,丢在了鸡窝里面。俗话讲一山不容二虎,没想到一窝不容二鸡。小公鸡去了以后,可以说是卖力的表演,使尽了浑身的解数,吸引了所有的母鸡的注意,老公鸡觉得地位不保,很是担心。于是他提出跟新来的小公鸡举行一场赛跑:赢的留下,输的自动离开。第二天早上,两只鸡来到了起跑线上,随着一只母鸡的发令枪响两只鸡如同离弦之箭冲出跑道,拼命的往前跑。老公鸡刚开始还遥遥领先,后来体力渐渐不行了,慢慢被小公鸡赶了上来,就在这个小公鸡即将赶上老公鸡的时候,突然间“啪”的一声枪响,小公鸡顿时倒在血泊之中……只见农夫手里拿着一杆枪,气愤地说: “他们又卖给我一只同性恋的鸡!” 小红看完笑话决定好好学习,刚打开一本杂志,杂志上有人在卖鸡,小红决定买n只来玩玩,但小红只有n元钱,大公鸡一只要5元,大母鸡一只要4元,3只小鸡要2元,请问小红可以怎么买鸡;
输入格式:
输入一个数 n(1<=n<=2000);(有多组输入)
输出格式:
输出满足要求公鸡,母鸡,小鸡的个数的所有情况(按公鸡个数从小到大排序)。如果买不到就输出"No!"
输入样例:
在这里给出一组输入。例如:
1
10
568
输出样例:
在这里给出相应的输出。例如:
No!
0 1 9
6 49 513
16 36 516
26 23 519
36 10 522
#include <stdio.h>
#include <stdlib.h>
struct num//用结构体储存各种鸡的个数
{
int x;
int f;
int m;
};
int main()
{
int n, flg=0;
while(~scanf("%d", &n))//输入多组数据
{
flg=0;
struct num y;
int sum=0;
for(y.m=0 ; y.m<n/5 ; y.m++)//各种鸡的花费不可能超过总个数n
{
for(y.f=0 ; y.f<n/4; y.f++)
{
y.x=n-y.f-y.m ;
if(y.x%3==0)
{
int a;
a=y.x/3;
sum=a*2+y.f*4+y.m*5;
if(sum==n)
{
printf("%d %d %d\n", y.m, y.f, y.x);
flg=1;//标记能买到鸡
}
}
}
}
if(flg==0)//表示不能买到鸡
{
printf("No!\n");
}
}
return 0;
}