百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用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
代码长度限制
16 KB
时间限制
1000 ms
内存限制
64 MB
解答如下:
#include<stdio.h>
int main()
{
int n,a//公鸡,b//母鸡,c//鸡仔,flag=1;
scanf("%d",&n);
for(a=0;a<=n/5;a++)
{
for(b=0;b<=n/3;b++)
{
c=n-a-b;
if(15*a+9*b+c==3*n)
//注意,这里最好不要写5a+3b+c/3=n,因为c可能不是3的倍数,导致c/3取整错误
{
printf("%4d%4d%4d\n",a,b,c);
flag=0;
}
}
}
if(flag==1)
{
printf("No Answer");//为输出no answer提供桥梁
}
return 0;
}
这种问题基本都是暴力求解,即枚举法。