百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用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
代码:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i, j, k;
int flag = 0;
for (i = 0; i <= n / 5; i++) // i表示公鸡的只数,最多可以买n/5只
{
for (j = 0; j <= n / 3; j++) // j表示母鸡的只数,最多可以买n/3只
{
k = n - i - j; // k表示小鸡的只数,通过n、i和j计算得到
if (k % 3 == 0 && i * 5 + j * 3 + k / 3 == n) // 如果小鸡的只数是3的倍数且总钱数正好为n
{
printf("%4d%4d%4d\n", i, j, k); // 输出方案
flag = 1; // 标记已经找到了一个方案
}
}
}
if (flag == 0) // 如果没有找到方案
printf("No Answer");
return 0;
}
注意:
1.公鸡,母鸡,小鸡的表示方式
2.小鸡的个数必须是3的倍数
3.输出时注意%4d%4d%4d
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
for (int i = 0; i <= n / 5; i++) {
for (int j = 0; j <= n / 3; j++) {
int k = 100 - i - j;
if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0) {
printf("%4d%4d%4d\n", i, j, k);
count++;
break; // 找到解后退出内层循环
}
}
}
if (count == 0) {
printf("No Answer\n");
}
return 0;
}