《B3836 [GESP202303 二级] 百鸡问题》

题目背景

对应的选择、判断题:https://ti.luogu.com.cn/problemset/1122

题目描述

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

"每只公鸡 5 元,每只母鸡 3 元,每 3 只小鸡 1 元;现在有 100 元,买了 100 只鸡,共有多少种方案?"

小明很喜欢这个故事,他决定对这个问题进行扩展,并使用编程解决:如果每只公鸡 x 元,每只母鸡 y 元,每 z 只小鸡 1 元;现在有 n 元,买了 m 只鸡,共有多少种方案?

输入格式

输入一行,包含五个整数,分别为问题描述中的 x,y,z,n,m。约定 1≤x,y,z≤10,1≤n,m≤1000。

输出格式

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

输入输出样例

输入 #1复制

复制代码
5 3 3 100 100

输出 #1复制

复制代码
4

输入 #2复制

复制代码
1 1 1 100 100

输出 #2复制

复制代码
5151

说明/提示

【样例 1 解释】

这就是问题描述中的"百鸡问题"。4 种方案分别为:

  • 公鸡 0 只、母鸡 25 只、小鸡 75 只。
  • 公鸡 4 只、母鸡 18 只、小鸡 78 只。
  • 公鸡 8 只、母鸡 11 只、小鸡 81 只。
  • 公鸡 12 只、母鸡 4 只、小鸡 84 只。

代码实现:

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x, y, z, n, m;
    cin >> x >> y >> z;
    cin >> n >> m;

    int cnt = 0;

    for (int i = 0; i <= m; i++) {
        for (int j = 0; j <= m - i; j++) {
            int k = m - i - j; 
            if (k < 0 || k % z != 0) continue;

            int cost = i * x + j * y + (k / z);
            if (cost == n) {
                cnt++;
            }
        }
    }

    cout << cnt << endl;
    return 0;
}
相关推荐
Jasmine_llq2 天前
《B4356 [GESP202506 二级] 数三角形》
开发语言·c++·双重循环枚举算法·顺序输入输出算法·去重枚举算法·整除判断算法·计数统计算法
Jasmine_llq4 天前
《B4259 [GESP202503 二级] 等差矩阵》
线性代数·矩阵·顺序输入输出算法·双重循环遍历算法·行列乘积计算算法·矩阵逐行输出算法·空格分隔输出算法
Jasmine_llq6 天前
《B4037 [GESP202409 二级] 小杨的 N 字矩阵》
线性代数·顺序输入输出算法·双重循环遍历算法·条件分支判断算法·边界字符输出算法·对角线定位算法·逐行输出控制算法
Jasmine_llq11 天前
《B3955 [GESP202403 二级] 小杨的日字矩阵》
线性代数·顺序输入输出算法·双重循环遍历算法·条件分支判断算法·中间行定位算法·边界字符输出算法·逐行格式控制算法
Jasmine_llq12 天前
《B3954 [GESP202403 二级] 乘法问题》
算法·顺序输入输出算法·布尔标记算法·累乘算法·循环迭代算法·阈值判断算法·条件分支输出算法
Jasmine_llq14 天前
《B3923 [GESP202312 二级] 小杨做题》
开发语言·状态标记算法·顺序输入输出算法·递推迭代算法·循环遍历算法·条件终止算法·累加求和算法
Jasmine_llq18 天前
《B3840 [GESP202306 二级] 找素数》
开发语言·c++·试除法·顺序输入输出算法·素数判定算法·枚举遍历算法·布尔标记算法