5270: 百钱买百鸡
描述
百鸡问题是一个数学问题,出自中国古代约5—6世纪成书的《张邱建算经》:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?
意思就是:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
现在的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
多组数据,每组输入一个正整数n(n<=100)。
输出
如果有解,输出所有解,每个解占一行,包含公鸡、母鸡、小鸡的只数。
公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。
如果无解,输出“No Answer”。
样例输入
100
样例输出
0 25 75
4 18 78
8 11 81
12 4 84
#include <stdio.h>
int main()
{
int x,y,z,i,j,n,x1[100],y1[100],z1[100],c,q;
while(scanf("%d",&n)!=EOF)
{
c=0;
for(x=0;x<=n;x++)
{
for(y=0;y<=n;y++)
{
z=n-x-y;
if((z%3==0)&&(5*x+3*y+z/3==n))
{
c++;
x1[c]=x;
y1[c]=y;
z1[c]=z;
}
}
}
if(c==0)
printf("No Answer\n");
else
{
for(i=1;i<=c;i++)
{
j=101;
if(x1[i]<j)
{j=x1[i];
q=i;}
else if(x1[i]=j)
{
if(y1[i]<y1[i-1])
q=i;
else if(z1[i]<z1[i-1])
q=i;
}
printf("%d %d %d\n",x1[q],y1[q],z1[q]);
}
}
}
return 0;
}