NOIP复赛C++试题解析:数字统计与接水问题
版权申诉
56 浏览量
更新于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 上传
不吃鸳鸯锅
- 粉丝: 8472
- 资源: 2万+
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南