百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 100 文钱买 100 只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数 n,用 n 文钱买 n 只鸡,问公鸡、母鸡、小鸡各买多少只?
输入格式
输入一个正整数 n。
输出格式
如果有解,依次输出公鸡、母鸡、小鸡的个数(用正整数表示)。
如果无解,输出"No Answer."
。
数据范围
1≤n≤200。
Sample Input
100
Sample Output
0 25 75 4 18 78 8 11 81 12 4 84
用for循环将100块钱能够买到的鸡的不同情况一一列出
因为有公鸡、母鸡、小鸡三种,所以采用三个for循环嵌套
小鸡个数必定是三的倍数,否则一定不会正好100文
for(g=0;g<=n;g++)
{
for(m=0;m<=n;m++)
{
for(x=0;x<=n;x++)
{
if(n==5*g+3*m+x/3&&n==g+m+x&&x%3==0)
{
printf("%d %d %d\n",g,m,x);
sum++;
}
}
}
}
用sum计数,将sum初始化为0.每次有解产生sum就+1.如果最后 sum=0,就是无解
无解则输出"No Answer."
if(sum==0)
printf("No Answer.\n");
总代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int g,m,x,n;
int sum=0;
scanf("%d",&n);
for(g=0;g<=n;g++) //for循环遍历每一种情况
{
for(m=0;m<=n;m++)
{
for(x=0;x<=n;x++)
{
if(n==5*g+3*m+x/3&&n==g+m+x&&x%3==0) //设定符合条件的情况
{
printf("%d %d %d\n",g,m,x);
sum++;
}
}
}
}
if(sum==0)
printf("No Answer.\n");
return 0;
}