Description
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
Input
输入一个正整数n(n<=100)。
Output
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
Sample Input
100
Sample Output
0 25 75 4 18 78 8 11 81 12 4 84
题意概括:给你n元钱,给定鸡的价格,问公鸡,母鸡,小鸡共n只有几种情况
解题思路:
1: 用循环即可解决。
错误原因:
1: 整数除以整数仍然是整数。因此k/3可能得出非正确答案。应该使用浮点数
经验总结:无
我的AC代码:
#include<stdio.h>
int main(void)
{
int n, i, j, k, flag = 0;
scanf("%d", &n);
for(i = 0; i <= n/5.0; i ++)
{
for(j = 0; j <= n/3.0;j ++)
{
k = n - i - j;
if(k/3.0 + j * 3+ i * 5 ==n*1.0)
{
flag = 1;
printf("%4d%4d%4d\n", i, j, k);
}
}
}
if(flag == 0)
{
printf("No Answer\n");
}
return 0;
}
{
int n, i, j, k, flag = 0;
scanf("%d", &n);
for(i = 0; i <= n/5.0; i ++)
{
for(j = 0; j <= n/3.0;j ++)
{
k = n - i - j;
if(k/3.0 + j * 3+ i * 5 ==n*1.0)
{
flag = 1;
printf("%4d%4d%4d\n", i, j, k);
}
}
}
if(flag == 0)
{
printf("No Answer\n");
}
return 0;
}