当前位置: 首页 > news >正文

东方博宜OJ 1025:兑换硬币 ← 循环结构

【题目来源】
https://oj.czos.cn/p/1025

【题目描述】
用一张一元票换 1 分、2 分和 5 分的硬币,每种至少一枚, 问有几种换法?

【输入格式】


【输出格式】
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。

【输入样例】


【输出样例】


【数据范围】
一张一元票

【算法分析】
● 本题是一个经典的“换硬币”问题。我们需要用一张一元票(即 100 分)换成 1 分、2 分和 5 分的硬币,每种至少一枚。求有多少种换法。
● 设 1 分硬币数量为 a,2 分硬币数量为 b,5 分硬币数量为 c。则有以下方程和约束:a + 2b + 5c = 100,且 a >= 1, b >= 1, c >= 1。
● 由于 5 分硬币面值最大,先从它入手枚举:
(1)c 最小为 1,最大为多少?由 a + 2b + 5c = 100,得 5c = 100 - a - 2b(当 a 和 b 都取最小值 1 时,5c 最大),可知 5c <= 100 - 1 - 2 = 97,所以 c <= 19。
(2)固定 c 后,剩余金额为 remain = 100 - 5c,且 1 分和 2 分硬币每种至少一枚。
(3)进一步转换:设 b' = b - 1,a' = a - 1,则 a' + 2b' = remain - 3,且 a' >= 0,b' >= 0。
(4)对于每个 c,计算方程 a' + 2b' = remain - 3 的非负整数解的数量。这可以通过枚举 b' 从 0 到 (remain - 3)/2 来实现。

#include <bits/stdc++.h> using namespace std; int main() { int cnt=0; for(int c=1; c<=19; c++) { int rem=100-5*c; if(rem<3) continue; int t=rem-3; for(int b=0; 2*b<=t; b++) { int a=t-2*b; if(a>=0) cnt++; } } cout<<cnt<<endl; //461 return 0; }

但此代码,对初学者来说有些难。故给出如下适合初学者学习的代码。

【算法代码】

#include <bits/stdc++.h> using namespace std; int main() { int cnt=0; for(int a=1; a<=100; a++) { for(int b=1; b<=50; b++) { for(int c=1; c<=20; c++) { if(a+2*b+5*c==100) cnt++; } } } cout<<cnt<<endl; return 0; }




【参考文献】
/


http://www.jsqmd.com/news/868828/

相关文章:

  • LEO卫星自愈网络:动态抗干扰与信号合并算法实践
  • 如何用Java实现i茅台自动预约系统:免费开源完整指南
  • FanControl终极指南:3个核心模块助你打造完美风扇控制方案
  • fuckZHS:智慧树课程自动化学习脚本深度解析与逆向工程技术实现
  • 5分钟学会使用B站广告智能跳过插件:告别视频打扰,享受纯净观看
  • 终极指南:如何在macOS上实现Windows风格的Alt-Tab窗口切换
  • EmotiVoice终极指南:5分钟上手2000种音色的免费语音合成神器
  • 如何安全高效地升级SillyTavern聊天界面?
  • 视觉导航机器人:纯视觉SLAM与深度学习实践
  • 3步解决AI图像标注难题:JoyCaptionAlpha Two让智能标注变得简单高效
  • Keil C251中HEX文件生成异常的解决方案
  • SolveSpace:3分钟掌握开源参数化CAD设计神器
  • Conductor工作流引擎:5个步骤构建企业级分布式任务编排系统
  • Keil µVision调试器内置函数详解与应用技巧
  • inject最佳实践:Facebook内部如何使用这个依赖注入库
  • restful-authentication插件架构分析:模块化设计的终极优势
  • 实战精通HarukaBot:构建高效的B站动态推送QQ机器人系统
  • 探索3D打印新境界:MKS TinyBee ESP32智能控制主板全解析
  • 掌握Mirth Connect:医疗数据交换的终极实战指南
  • 跨越技术代沟:WinDiskWriter如何让新老系统无缝对话
  • 3步彻底告别重复GUI操作:零代码AI助手如何让你每天节省2小时
  • Vue3拖拽缩放组件:如何用5分钟为你的应用添加专业级交互体验
  • [笔记] 系统分析师 考点总结及资料
  • Trotter-Suzuki分解原理与量子模拟实践
  • 终极Ventoy启动界面定制指南:从基础到高级的完整解决方案
  • 常见网站呀
  • 为什么你的软件供应链需要依赖分析:5个实战场景解析cdxgen安全审计方案
  • MQTTClient技术深度解析:嵌入式物联网通信的高性能解决方案
  • 2026年热门的LED路灯/西安太阳能路灯/市电两用太阳能路灯源头工厂推荐 - 行业平台推荐
  • 充气车载床垫生产厂家推荐:2026充气车载床垫定制批发厂家源头直供 - 栗子测评