news 2026/4/30 8:08:55

GESP2025年6月认证C++五级( 第三部分编程题(1、奖品兑换))

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP2025年6月认证C++五级( 第三部分编程题(1、奖品兑换))



🏰《数据结构王国 · 编程题1:奖品兑换大作战》》


一、🌈故事背景

在班级王国里 👑

老师发了两种奖励券:

  • 📘 课堂优秀券(蓝色)

  • 📗 作业优秀券(绿色)

小 A 拿着一堆券,想去换奖品 🎁!


二、🎯兑换规则

两种兑换方式

🥇方式1

👉 用a张课堂券 +b张作业券 → 换 1 个奖品


🥈方式2

👉 用b张课堂券 +a张作业券 → 换 1 个奖品


三、❓问题

👉 小 A 有:

  • n 张课堂券

  • m 张作业券

👉最多可以换多少个奖品?


四、🧠关键思考

1、🌟核心问题

👉 每换一次,就会消耗券!

👉 两种方式可以混着用!


2、❗关键难点

👉 怎么搭配,才能换最多?


五、🧠结题思路

我们来想一个策略👇


1、🎯思路:尝试“换 x 个”行不行?

👉 假设:我们总共换x个奖品

那我们要检查:

👉这些券够不够用?


2、🧠检查方法

假设:

  • 有一部分用方式1

  • 有一部分用方式2

但我们不用真的分!

👉 用一个“调整技巧”判断就行(这就是参考程序的核心思想)


3、🧠核心技巧

(1)👉 如果我们想换 x 个奖品:

先假设:

  • 全部用方式1
    👉 消耗:

  • 课堂:x × a

  • 作业:x × b


(2)⚠️如果作业券不够怎么办?

👉 就把一些“方式1”改成“方式2”

👉 因为方式2会:

  • 少用一些作业券

  • 多用一些课堂券


(3)👉 最终目标:

👉 调整后满足:

  • 课堂 ≤ n

  • 作业 ≤ m


六、🚀完整解法:二分答案!

👉 问题变成:

👉最多能换多少次?


1、🎯做法

👉 用二分查找答案!


2、🧠步骤

① 左边:0
② 右边:最多可能(比如 n )

③ 每次猜一个 mid(尝试换 mid 次)

④ 用 check(mid) 判断是否可行


💻完整参考代码

#include <iostream> using namespace std; long long n, m, a, b; // 检查能不能换 v 个奖品 bool check(long long v) { long long x = v * a; // 课堂券 long long y = v * b; // 作业券 // 如果作业券不够,就调整 if (y > m) { long long t = (y - m + (b - a) - 1) / (b - a); y -= t * (b - a); x += t * (b - a); } return x <= n && y <= m; } int main() { cin >> n >> m; cin >> a >> b; if (n > m) swap(n, m); if (a > b) swap(a, b); long long l = 0, r = n; while (l < r) { long long mid = (l + r + 1) / 2; if (check(mid)) l = mid; else r = mid - 1; } cout << l << endl; return 0; }

七、🎯举例方便理解

1、输入:

n = 8, m = 8 a = 2, b = 1

2、🧠解释

👉 一次兑换:

  • 用 2 课堂 + 1 作业

  • 用 1 课堂 + 2 作业


3、尝试

👉 最多能换多少?

👉 答案:5


八、🎉最终总结


🌟这题用到的知识点:

1️⃣ 复杂问题 → 转成“能不能做到”
2️⃣ 用函数 check 判断
3️⃣ 用二分找最大答案
4️⃣ 灵活调整资源分配


九、📌记忆口诀

👉 不能直接算答案
👉 就用二分去“猜答案”


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 8:06:23

虚拟ZPL打印机:Zebra标签开发的终极测试工具

虚拟ZPL打印机&#xff1a;Zebra标签开发的终极测试工具 【免费下载链接】Virtual-ZPL-Printer An ethernet based virtual Zebra Label Printer that can be used to test applications that produce bar code labels. 项目地址: https://gitcode.com/gh_mirrors/vi/Virtual…

作者头像 李华
网站建设 2026/4/30 8:06:22

天线阻抗匹配与PCB设计实战指南

1. 天线设计基础与阻抗匹配原理天线作为无线通信系统的关键部件&#xff0c;其性能直接影响着整个系统的通信距离和信号质量。在实际工程中&#xff0c;我们常常遇到这样的问题&#xff1a;为什么精心设计的天线在实际应用中却达不到预期的性能指标&#xff1f;这往往与阻抗匹配…

作者头像 李华
网站建设 2026/4/30 8:03:34

3分钟掌握Blender MMD Tools:从零开始导入MMD模型的终极指南

3分钟掌握Blender MMD Tools&#xff1a;从零开始导入MMD模型的终极指南 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …

作者头像 李华
网站建设 2026/4/30 8:01:23

ADE-CoT图像编辑优化:细节增强与上下文感知技术解析

1. 图像编辑优化策略概述在数字图像处理领域&#xff0c;编辑优化一直是核心挑战。传统方法往往面临效率与质量难以兼顾的困境&#xff0c;要么处理速度慢&#xff0c;要么输出效果不理想。ADE-CoT&#xff08;Adaptive Detail Enhancement with Context-aware Optimization&am…

作者头像 李华
网站建设 2026/4/30 7:55:11

XUnity.AutoTranslator完整教程:3步实现Unity游戏实时翻译

XUnity.AutoTranslator完整教程&#xff1a;3步实现Unity游戏实时翻译 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而无法畅玩心仪的日系RPG或欧美独立游戏&#xff1f;XUnity.Au…

作者头像 李华
网站建设 2026/4/30 7:42:52

重磅! 官方接入 OpenClaw“小龙虾”:一键创建机器人,分钟极速部署!

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知&#xff0c;本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台&#xff0c;有非常多的配置参数。详细的参数列表可以…

作者头像 李华