全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
二、一维数组应用技巧2:打标记
实战训练1—开关灯
问题描述:
有 M个从1到M依次编号的人参加一项游戏。将K 盏从1到K依次编号的灯(K和M均为正整数,M≤K≤5000)进行一系列的熄灭与打开的操作,游戏开始时均处于亮灯的状态;第一个人(1号)将灯全部熄灭;第二个人(2号)将编号为2的倍数的灯做相反处理(即将打开的灯熄灭,将熄灭的灯打开);第三个人( 3号)将编号为3的倍数的灯做相反处理;依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
输入格式:
输入共一行,包含两个正整数K和M,以单个空格隔开。
输出格式:
输出共一行,顺次输出关闭的灯的编号,其间用逗号间隔。
输入输出样例:
输入样例1 | 输出样例1 |
10 10 | 1,4,9 |
输入样例2 | 输出样例2 |
20 30 | 1,4,9,16 |
问题分析:
根据题意,可以采用打标记的思想来解决此问题,首先定义一个布尔类型数组,数组元素为0表示灯处于亮的状态,1为灯处于熄灭的状态,起始值都为0,这里需要注意由于灯的编号从1到k,所以数组元素在初始时,从下标为1开始;其次来模拟操作的过程,总共m次操作,每次操作将所有是编号倍数的灯执行相反操作,这里使用嵌套循环来实现,外层循环表示m次操作,内层循环遍历一遍灯,将编号是外层循环变量的倍数,则执行相反操作;最后对熄灭的灯进行统计并输出,需要注意除了最后一盏灯,其余灯之间需要用逗号隔开。具体代码如下所示:
#include<bits/stdc++.h>
using namespace std;
int main(){const int MAXLEN =5005;//定义常变量的值为5005 int k,m;//定义灯的数量变量k和操作数变量m scanf("%d%d",&k,&m);//输入k和m的值 bool a[MAXLEN];//定义长度为MAXLEN的布尔类型数组a memset(a+1,0,k*sizeof(bool));//将1到k的初始值设置为0,表示所有的灯都开着,1表示灯关闭 int sum=0;//记录关闭灯的数量和 for(int i=1;i<=m;i++){//进行m次操作 for(int j=1;j<=k;j++){//对于每次操作,依据人的编号,对编号的倍数执行相关的操作 if(j%i==0){//查看当前灯j是否为编号i的整数倍 a[j]=!a[j];//对灯执行相反操作 }}}for(int j=1;j<=k;j++){//依次遍历k盏灯 if(a[j]){//灯如果是熄灭的状态 sum++;//数量加1 }}//在输出时,灯编号需要用逗号隔开,最后一盏灯不需要逗号,所以使用一个临时变量tmpsum来记录输出了多少盏关闭的灯 int tmpsum=0;for(int j=1;j<=k;j++){if(a[j]){//灯关闭,则输出该盏灯 tmpsum++;printf("%d",j);//输出灯编号 if(tmpsum<sum){//如果没有达到sum,则不是最后一盏关闭的灯,输出逗号 printf(",");}}}return 0;
}
三、循环应用技巧3:巧用数组下标,实现计数功能
实战训练2—数字统计
问题描述:
在[l,r]范围内的整数中,每个整数各个数位上每个数字一共出现过多少次?例如,129~137:129,130,131,132,133,134,135,136,137。统计后发现:“0”出现了1次,“1”出现了10次,“2”出现了2次,“3”出现了9次,“4”出现了1次,“5”出现了1次,“6”出现了1次,“7”出现了1次,“8”出现了0次,“9”出现了1次。
输入格式:
输入共一行,包含两个整数M和N,并用空格分隔开来。
输出格式:
输出共一行,包含十个整数并用空格分开,分别表示数码 0,1,2,… ,9 在序列中出现的次数。
输入输出样例:
输入样例1 | 输出样例1 |
101 120 | 11 32 3 2 2 2 2 2 2 2 |
输入样例2 | 输出样例2 |
219 225 | 1 2 14 1 1 1 0 0 0 1 |
问题分析:
根据题意,需要依次分离[l,r]范围内每个整数的各个数位,用数组统计分离出来的数字(0~9)的个数,数组的下标表示出现的数字,数组元素表示该数字出现的次数,即累计“数组下标对应的数字”出现的次数。需要注意对于[l,r]范围内的整数依次进行分离时,用循环变量i来表示这个整数,首先需要将i赋值给一个临时变量tmp,然后再对 tmp进行数位分离。程序中不能直接对数 i 进行数位分离。原因在于数 i 除了有表示区间数的意义外,还在循环控制中起到一定作用,如果直接对 i 进行数位分离,会使得 i 的值变为0,造成程序运行错误。所以枚举区间的数进行数位分离时,需要一个临时变量tmp,存储待分离的数。通过取模运算将得到数的个位,通过整除运算将该数的个位去掉,如此反复运算,直至该数变为0,数位分离结束。所有数字统计完毕后,循环输出0~9各个整数累计的个数。具体程序代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){int l,r,a[10];//定义整数的取值范围变量l和r,其次定义数字出现的数组a,长度为10的整型数组 memset(a,0,sizeof(a));//起始时,所有数字出现的次数为0,为数组元素全部赋值为0 scanf("%d%d",&l,&r);//输入l和r for(int i=l;i<=r;i++){//依次列举l和r范围内的所有整数 int tmp=i;//将整数i赋值给临时变量tmp while(tmp){//tmp不为0 a[tmp%10]++;//分离最后一个数位,并将该数位出现的次数加1 tmp=tmp/10;//移除最后一个数位 }}for(int i=0;i<10;i++){//依次输出每个数字出现的次数 printf("%d ",a[i]);}return 0;
}
相关文章:
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
二、一维数组应用技巧2:打标记 实战训练1—开关灯 问题描述: 有 M个从1到M依次编号的人参加一项游戏。将K 盏从1到K依次编号的灯(K和M均为正整数,M≤K≤5000)进行一系列的熄灭与打开的操作,游戏开始时均处于亮灯的状态…...

【2024年华为OD机试】 (B卷,100分)- 路灯照明问题(Java JS PythonC/C++)
一、问题描述 路灯照明问题 题目描述 在一条笔直的公路上安装了 ( N ) 个路灯,从位置 0 开始安装,路灯之间间距固定为 100 米。每个路灯都有自己的照明半径。请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。 输入描述 第一…...
SVGAPlayer error 处理
提示错误 Call to undeclared function OSAtomicCompareAndSwapPtrBarrier; ISO C99 and later do not support implicit function declarations Conflicting types for OSAtomicCompareAndSwapPtrBarrier Declaration of OSAtomicCompareAndSwapPtrBarrier must be imported …...
2024年12月电子学会青少年机器人技术等级考试(二级)实际操作试卷
2024.12 青少年机器人技术等级考试(二级)实际操作试卷 一、多选题 第 1 题 关于后轮驱动车说法正确的有哪些?( ) A.起步加速表现比前轮驱动好 B.容易转向过度 C.车身重量比前轮驱动更均衡 D.造价比前轮驱动车更高…...
Swift 专题二 语法速查
一 、变量 let, var 变量是可变的,使用 var 修饰,常量是不可变的,使用 let 修饰。类、结构体和枚举里的变量是属性。 var v1:String "hi" // 标注类型 var v2 "类型推导" let l1 "标题" // 常量class a {…...

Api网关Zuul
网关分类与开放API 开放API (OpenAPI) 企业需要将自身数据、能力等作为开发平台向外开放,通常会以REST的方式向外提供,最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。开放API平台必然涉及到客户应用的接入、API权限的管理、调用次数…...

01设计模式(D3_设计模式类型 - D3_行为型模式)
目录 一、模版方法模式 1. 基本介绍 2. 应用案例一:豆浆制作问题 需求 代码实现 模板方法模式的钩子方法 3. View的draw(Android) Android中View的draw方法就是使用了模板方法模式 模板方法模式在 Spring 框架应用的源码分析 知识小…...

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)角点检测
角点检测(Corner Detection)是计算机视觉和图像处理中重要的步骤,主要用于提取图像中的关键特征,以便进行后续的任务,比如图像匹配、物体识别、运动跟踪等。下面介绍几种常用的角点检测方法及其应用。 1. Harris角点检…...

费解的开关
费解的开关 你玩过“拉灯”游戏吗? 25 盏灯排成一个 55 的方形。 每一个灯都有一个开关,游戏者可以改变它的状态。 每一步,游戏者可以改变某一个灯的状态。 游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也…...

【机器学习】机器学习引领数学难题攻克:迈向未知数学领域的新突破
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 一、引言 在数学的浩瀚领域中,存在着诸多长期未解的难题,这些难题犹如高耸的山峰,吸引着无数数…...

Qt之QDjango-db的简单使用
QDjango是一款由C编写、依托于Qt库的Web开发框架,其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集,帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango&…...

缓存、数据库双写一致性解决方案
双写一致性问题的核心是确保数据库和缓存之间的数据同步,以避免缓存与数据库数据不同步的问题,尤其是在高并发和异步环境下。本文将探讨双写一致性面临的主要问题和解决方案,重点关注最终一致性。 本文讨论的是最终一致性问题 双写一致性面…...

SUnet: A multi-organ segmentation network based on multiple attention【医学图像分割】
一、论文信息 1.1、中文名称 名称:SUnet:基于多重注意力的多器官分割网络 1.2、论文关键词 医学图像分割、Transformer、注意力机制、高效特征融合模块 1.3、核心概述 本文提出了一种新颖有效的医学图像分割方法 SUnet,用于腹部和胸部的多…...
uniapp实现“到这儿去”、拨打电话功能
"到这儿去" 在 UniApp 中实现“到这儿去”的功能,即调起地图导航至指定位置,对于不同的平台(小程序、H5、App)有不同的处理方式。下面将简单介绍如何在这些平台上实现该功能,并讨论位置信息的获取。后面需求会用到,先来找一些相关资料,并不一定很准确,但也来…...

2025年入职/转行网络安全,该如何规划?网络安全职业规划
网络安全是一个日益增长的行业,对于打算进入或转行进入该领域的人来说,制定一个清晰且系统的职业规划非常重要。2025年,网络安全领域将继续发展并面临新的挑战,包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…...

【博客之星】2024年度个人成长、强化学习算法领域总结
📢在2025年初,非常荣幸能通过审核进入到《2024年度CSDN博客之星总评选》TOP300的年度评选中,排名40。这还是第一次来到这个阶段,作为一名博士研究生,还是备受鼓舞的。在这里我将以回顾的方式讲述一下这一年在CSDN中走过…...
HTML5 Canvas实现的跨年烟花源代码
以下是一份基于HTML5 Canvas实现的跨年烟花源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">…...

使用通用预训练范式为 3D 基础模型铺平道路
大家读完觉得有帮助记得关注和点赞!!!,本次是英文需要英文功底扎实的阅读。 Abstract In contrast to numerous NLP and 2D vision foundational models, learning a 3D foundational model poses considerably greater challenge…...

SpringMVC (2)
目录 1. RequestMapping 注解介绍 2. RequestMapping 使用 3. RequestMapping与请求方式 3.1 RequestMapping 支持Get和Post类型的请求 3.2 RequestMapping 指定接收某种请求 3.3 GetMapping和PostMapping 4. 传参 4.1 通过查询字符串传参 4.2 在 Body 中传参 4.2.1 …...
【Vim Masterclass 笔记16】S07L32 + L33:同步练习09 —— 掌握 Vim 宏操作的六个典型案例(含点评课内容)
文章目录 S07L32 Exercise 09 - Macros1 训练目标2 操作指令2.1. 打开 macros-practice.txt 文件2.2. 练习1:将旧版 Python 代码转换为新版写法2.3. 练习2:根据列表内容批量创建 Shell 脚本2.4. 练习3:对电话号码作格式化处理2.5. 练习4&…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...