ZZULIOJ题解
1074: 百钱买百鸡
题目描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
输入一个正整数n(n<=100)。
输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
样例输入
100
样例输出
0 25 75
4 18 78
8 11 81
12 4 84
典型的循环题目。注意标志的设立,还有就是第三种鸡的处理,不用再重新再开设循环,那样循环次数太多,费时费力,第三种鸡就等于n减去前两种鸡的数量,这样就不用循环多余的次数了
代码
#include<stdio.h>
int main()
{
int i,j,k,n,answer=0;//定义公鸡数i,母鸡数j以及小鸡数k
//还有n元也即是鸡数n,以及设立标志answe并初始化
scanf("%d",&n);//键盘输入一个正整数n,用n文钱买n只鸡
for(i=0;i<=n/5;i++)
{
for(j=0;j<=n/3;j++)
{
k=n-i-j;//第三种鸡的数量k等于总鸡数量n与其他两种鸡数量之差
if(i*15+j*9+k==n*3)//这里通分一下,将表达式直接整式运算
{
answer=1;//找到答案,把标志更改
printf("%4d%4d%4d\n",i,j,k);//按照格式要求输出
}
}
}
if(!answer)//如果标志还是没有更改,依旧是0
{
printf("No Answer");//说明没办法实现百钱买百鸡,输出无解
}
return 0;//程序正常结束
}