百钱买百鸡问题(升级版-N钱买N鸡)

百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用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;
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值