百鸡问题c++

【问题描述】 

百鸡问题是出自我国古代《张丘建算经》的著名数学问题。大意为:

只公鸡 5 元,每只母鸡 3 元,每 3 只小鸡 1 元;现在有 100 元,买了 100 只鸡,

共有多少种方案?

小明很喜欢这个故事,他决定对这个问题进行扩展,并使用编程解决:如果

每只公鸡x元,每只母鸡y元,每z只小鸡1元;现在有n元,买了m只鸡,

共有多少种方案?

【输入描述】

输入一行,包含五个整数,分别为问题描述中的xyznm。约定1≤x,

y,z≤101≤n,m≤1000

【输出描述】

输出一行,包含一个整数C,表示有C种方案。

样例输入1

5 3 3 100 100

样例输出1

4
【样例解释1

这就是问题描述中的百鸡问题4种方案分别为:公鸡0只、母鸡25只、

小鸡75只;公鸡4只、母鸡18只、小鸡78只;公鸡8只、母鸡11只、小鸡

81只;公鸡12只、母鸡4只、小鸡84只。

样例输入2

1 1 1 100 100

样例输出2

5151

【题目大意】

百钱买百鸡问题,输入公鸡母鸡和小鸡的价格,以及现有的钱和需要购买的鸡的

数量,计算输出方案数。

【考纲知识点】基本运算(一级),循环结构(二级)

【解题思路】使用循环嵌套枚举公鸡和母鸡的数量,根据总价计算要求表示出小鸡数量,通过判断每种方案鸡的总数是否满足要求,从而统计出正确的方案数;

【参考程序】

#include <iostream>
using namespace std;
int main() {
    int x, y, z, n, m, cnt = 0;
    //x,y,z 分别为公鸡母鸡的价格以及小鸡的价格与数量关系
    cin >> x >> y >> z >> n >> m;
    //枚举公鸡数量,公鸡数量小于等于总数量 m,公鸡价格 gj*x 小于等于总价格 n
    for (int gj = 0; gj * x <= n && gj <= m; gj++)
        //枚举母鸡数量,母鸡+公鸡的数量需要小于等于总数量 m,母鸡+公鸡的价格mj*y+gj*x 需要小于等于总价格 n
        for (int mj = 0; mj * y + gj * x <= n && mj + gj <= m; mj++) {
            int xj = (n - gj * x - mj * y) * z; //计算出小鸡的数量
                if (gj + mj + xj == m) //判断三种鸡的总数量是否等于 m
                    cnt++; //若相等则方案数+1
            }
    cout << cnt << endl; //最终输出正确的方案数
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值