NOIP复赛C++试题解析:数字统计与接水问题
版权申诉
136 浏览量
更新于2024-06-26
收藏 852KB PDF 举报
"这份资料是关于NOIP(全国青少年信息学奥林匹克联赛)复赛的C++编程题目的总结,涵盖了2010年至2015年的部分试题。主要涉及了数字统计和接水问题两个编程题目,适合于对算法和编程有一定基础的学习者进行参考和练习。"
一、【数字统计】
该题目的目标是统计在给定的整数范围内([L, R]),数字2出现的总次数。输入包含两个正整数L和R,输出为数字2出现的次数。题目要求使用C++语言编写程序,通过循环遍历范围内的每一个数,将每个数的每一位分离出来,逐一判断是否为2,然后累加计数。提供的代码示例使用了这种方法,通过`for`循环遍历范围,`while`循环处理每一位数字,如果数字是2,则增加计数器`ans`的值。最后,程序输出累计的次数。
```cpp
#include<cstdio>
using namespace std;
int main() {
int r, l, ans = 0;
scanf("%d%d", &r, &l);
for (int i = r; i <= l; i++) { // 一一判断
int num = i;
while (num > 0) { // 把每一位分离
if (num % 10 == 2)
ans++;
num /= 10;
}
}
printf("%d", ans);
return 0;
}
```
二、【接水问题】
这是一道模拟问题,涉及到队列和水资源分配的优化。问题设定有m个相同供水量的水龙头,n个同学需要接水,每个人的需求量不同。初始状态,前m个同学占据水龙头开始接水,当某同学完成接水后,下一个等待的同学立即接手,确保没有水的浪费。输入包括n(接水人数)和m(水龙头数),以及每个同学的接水量。需要计算出所有同学接完水的总时间。解答这类问题通常需要理解并模拟流程,可以使用队列来管理等待接水的同学,每次接水完成后更新接水时间和队列状态。
这两个题目都是信息竞赛中常见的算法问题,它们锻炼了选手的逻辑思维能力和对基础数据结构(如循环和队列)的理解。对于准备参加类似比赛的学生或编程爱好者来说,这类题目是很好的训练素材。
2020-11-19 上传
2021-09-17 上传
2021-08-20 上传
2020-11-19 上传
2021-01-12 上传
2021-02-06 上传
不吃鸳鸯锅
- 粉丝: 8510
- 资源: 2万+
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器