海盗搜身-2022年全国青少年信息素养大赛Python国赛第9题

news2024/11/23 8:45:29

 [导读]:超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲,这是超平老师解读Python编程挑战赛真题系列的第11讲。

全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛)是“世界机器人大会青少年机器人设计与信息素养大赛”赛事之一,由中国电子学会主办,包含很多赛项,大赛自2013年举办,已连续成功举办八届,已正式入围“2022-2025学年面向中小学生的全国性竞赛活动名单”。 

大赛旨在激发广大青少年的科学兴趣和想象力,培养钻研探究、创新创造的科学精神和实践能力,促进青少年科技创新活动的广泛开展,发现和培养一批具有科研潜质和创新精神的青少年科技创新后备人才。

大赛主要竞赛类别包括电子科技、智能机器人、软件编程三类,全国青少年Python编程挑战赛就属于其中的软件编程类。

一.赛事说明

2021-2022年(第8届)Python挑战赛赛程分为初赛、复赛和总决赛三个阶段。初赛是资格赛,复赛是地方选拔赛,总决赛是全国各地选拔的精英汇聚在一起进行PK。

2021-2022年全国青少年Python编程挑战全国总决赛于2022年8月27日正式举行。一共是10道编程题,每道题100分,满分1000分,考试时间是120分钟。

10道编程题分别如下:

  • 分苹果

  • 韩信点兵

  • 借书问题

  • 四位数密码

  • 邮票面值

  • 组合取球

  • 统计连续字符

  • n的n次方

  • 海盗搜身

  • 父与子

超平老师将分10讲对每道题进行详细的解读和剖析,今天要解读的是第9题,海盗搜身。

二.题目描述

题目背景:

—群渔民被海盗抓住了,依次坐在编号为1~n的凳子上,其中有一个人身上有藏宝图。

现在海盗想要找那个身上带着宝藏的渔民,海盗先将1号凳子上面的人搜身,没找到就隔1个凳子,将3号凳子上面的人搜身,没找到就隔2个凳子,将6号凳子上面的人搜身。

以后每次多隔一个凳子去搜索......这样下去找了100次没找到,最终放弃了把渔民释放了。

任意输入一个数字n(5 <= n <= 20)代表渔民的数量,依次输出哪些编号的渔民不会被搜身。

输入描述:

任意输入一个数字n(5 <= n <= 20)代表渔民的数量

输出描述:

依次输出哪些编号的渔民不会被搜身,每行一个

样例输入:

10

样例输出:

2

4

7

9

注意:

input()内不添加任何参数

只有完全正确才可提交,若无法点击提交说明答题存在错误,可及时进行检查并修改

三.思路分析

读完题目之后,你可能会有这样的疑问,渔民是怎么排列的呢?题目并没有描述清楚。

不过要确保能搜索100次,只有两种情况,一是队伍特别长,二是循环排列。实际上,渔民的数量最多只有20次,因此只能是第二种情况,也就是说,渔民是围成一圈依次坐在编号为1~n的凳子上的。

图片

这有点类似于著名的“约瑟夫环问题”,在约瑟夫环问题中,每次会减少一个人,并且间隔是固定不变的。

本题所描述的场景中,人是固定不变的,但是每次间隔的数字是变化的,从1开始,然后是2、3、4...。

我们可以使用一个列表用来保存所有渔民的编号,从1开始,到n结束,然后模拟搜身的过程。

从第一个人开始遍历,如果搜到对应的渔民,将列表项修改为-1,然后按照间隔搜索下一个人,不停的重复过程。

当搜索到第n个人的时候,下一个人就回到第一个人了,这需要使用余数运算。

接下来,我们进入具体的编程实现环节。

四.编程实现

根据上面的思路分析,我们编写代码如下:

图片

简单说明3点:

1). 变量j用来表示下标,列表中的值是从1开始编号的,但是遍历列表时,需要从下标0开始,因此j的初始值为0;

2). 变量step表示间隔,从第一个人开始搜身,下一次要间隔两个人,所以初始值为2,每循环一次,step就增加1;

3). j每次增加step,一旦超出n的值,就需要回到0,这是通过余数运算来实现的,即j = (j + step) % n,这是我们在处理环问题时的通用方法。

以10为例,首先进行编号,编号分别为1、2、3、4、5、6、7、8、9、10,如下:

图片

经过100次搜索之后,其结果为:

图片

值为-1的就表示已经搜过身了,然后进行过滤,将大于0的列表项留下,就是不会被搜身的渔民了,如图:

图片

五.总结与思考

本题难度较大,考查的知识点主要包括:

  • 输入输出函数;

  • 列表操作,尤其是列表推导式的灵活运用;

  • for...in循环,注意两种for循环的区别;

  • 余数的灵活运用;

对于小学和初中的孩子来说,本题的难度不小,首当其冲的就是要读懂题目的意思,虽然题目描述的没有那么清晰,但是通过自己的分析还是可以理解其真实意图的。

既然提到约瑟夫环问题,超平老师就给你留一个小作业,请你编程求解约瑟夫环问题。

设编号为1,2,……n的n个人围坐一圈,约定编号为k(k大于等于1并且小于等于n)的人从1开始报数,数到m的那个人出列。它的下一位继续从1开始报数,数到m的人出列,依次类推,直到所有人都出列为止。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/752877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+ts+element-plus管理系统实际开发业务之增删改查

文章目录 功能一&#xff1a; 实现一个表格增、删、改、查功能✏️ 1. 表格、添加按钮、删除按钮、搜索框和搜索按钮、编辑按钮添加&#x1f4d2; 运行后页面效果&#xff1a;如下 ✏️ 2. 使用添加按钮添加一条新纪录&#xff0c;逻辑点击按钮弹出带有表单的弹窗进行输入添加。…

Elasticsearch--查询(nested、join)

nested 嵌套类型 数据的某个值是json、object对象&#xff1b;不再是简单的数据类型&#xff0c;或者简单数据类型的数组&#xff1b;那么还用之前的查询方式就有问题了。因为ES在存储复杂类型的时候会把对象的复杂层次结果扁平化为一个键值对列表 。此时&#xff0c;需要用n…

一文了解OLED拼接屏优点

随着科技的不断发展&#xff0c;显示技术也在不断地更新换代。其中&#xff0c;OLED技术是目前最为先进的显示技术之一。 OLED拼接屏是一种利用OLED技术制作的大屏幕显示设备&#xff0c;可以将多个OLED屏幕拼接在一起&#xff0c;形成一个更大的显示屏幕。济南OLED拼接屏是一…

分布式锁的实现方式

文章目录 一、分布式锁概述1.1 为什么需要分布式锁1.2 概述分布式锁1.3 分布式锁的特性1.4 分布式锁的类型1.5 实现重点 二、Mysql数据库实现分布式锁2.1 表结构2.2 加锁2.3 解锁2.4 锁超时2.5 实现重入锁 三、Redis实现分布式锁3.1 加锁3.2 解锁3.3 锁超时3.4 redlock的容错性…

设计模式-简单工厂模式

文章目录 简单工厂设计模式什么是简单工厂?为什么使用简单工厂工厂模式代码实现简单工厂优缺点优点&#xff1a; 简单工厂设计模式 学习视频 什么是简单工厂? 简单工厂模式属于类的创建型模式&#xff0c;又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实…

GitLab CICD Day 08 - 环境变量

1.局部/全局环境变量 stages:- testing # stage编排- build- deployvariables:global_var: "全部变量" #全部变量build_image:stage: buildvariables: #局部环境变量my_name: "局部环境变量" tags:- shell script:- …

14款奔驰R400升级ACC自适应巡航系统,增加您的行车安全性

有的时候你是否厌倦了不停的刹车、加油&#xff1f;是不是讨厌急刹车&#xff0c;为掌握不好车距而烦恼&#xff1f;如果是这样&#xff0c;那么就升级奔驰原厂ACC自适应式巡航控制系统&#xff0c;带排队自动辅助和行车距离警报功能&#xff0c;感受现代科技带给你的舒适安全和…

window.getComputedStyle

遇见一个问题&#xff0c;一个元素样式用的 固定定位。但是 top 属性没有在 元素树&#x1f332;种显示。js获取不到。这个方法可以获取到 style 里面设置的样式

OI中好用的技巧——c++快读快写

在写一些题时&#xff0c;发现不对读写进行处理会 TLE or WA 此时就需要降低读写的时间 c读写速度 &#xff1a; 普通写法 < scanf和printf写法 ≈ 缓存禁用写法 < 字符处理写法 普通写法&#xff08;读写最慢&#xff09; #include<iostream> using namespace…

车载调频发射机-德阳广播电台应用机关车队车载电台移动解说系统

车载调频发射机-德阳广播电台应用机关车队车载电台移动解说系统 北京海特伟业科技任洪卓发布于2023年7月13日 一、车载调频发射机-机关车队车载电台移动解说系统用户需求 机关车队主要承担领导干部公务用车以及重要会议、公务接待、调研应急等公务用车的服务保障工作。为认真…

前段开发概述

目录 网站概述 网站&#xff08;web site&#xff09;&#xff1a; 网页概述 网站开发流程&#xff1a; HTML基本概念 开发工具的选择 网站概述 网站&#xff08;web site&#xff09;&#xff1a; 按照一定规则&#xff0c;使用HTML超文本标记语言等工具制作的。用于展示…

FPGA——静态数码管

文章目录 一、实验环境二、实验原理三、实验任务四、实验过程4.1 time_count模块4.2 seg_led_static模块4.3 top_seg_led_static模块4.4 引脚配置 五、仿真5.1 仿真代码5.2 仿真结果 六、实验结果七、总结 一、实验环境 quartus 18.1 modelsim vscode Cyclone IV开发板 二、实…

大坝安全监测中需要做好检查监测

大坝安全监测是人们了解大坝运行状态和安全状况的有效手段和方法。它的目的主要是了解大坝安全状况及其发展态势&#xff0c;是一个包括由获取各种环境、水文、结构、安全信息到经过识别、计算、判断等步骤&#xff0c;最终给出一个大坝安全 程度的全过程。 此过程包括&#xf…

阿里云无影云电脑和服务器有啥区别?

阿里云无影云电脑和云服务器有什么区别&#xff1f;云电脑是作为个人或企业办公电脑使用&#xff0c;云服务器是对外提供24小时高可用服务&#xff0c;云电脑是桌面服务&#xff0c;云服务器是提供背后的计算服务&#xff0c;阿里云百科分享阿里云无影云电脑和云服务器的区别&a…

互联网医院源码|互联网医院系统源码|互联网医院诊疗系统

互联网医院系统开发可以提供许多好用的功能&#xff0c;以下是一些常见的功能&#xff1a;   在线挂号预约&#xff1a;用户可以通过系统在线选择医生、科室和就诊时间&#xff0c;并进行挂号预约&#xff0c;避免了传统排队等候的麻烦。   问诊咨询&#xff1a;用户可以通…

Fiddler 抓包工具 手机抓包配置

1. 下载Fiddler 工具阿里云盘分享 2. 安装后进行设置 Tools -->Options 这些设置完后开始手机WLAN 设置 1. 打开手机的“设置” ->“WLAN”&#xff0c;找到你要连接的网络&#xff0c;在上面长按&#xff0c;然后选择“修改网络”&#xff0c;弹出网络设置对话框&…

探索Web自动化测试工具的特点

Web应用程序的快速发展使得自动化测试在软件开发生命周期中变得至关重要。Web自动化测试工具为开发人员和测试人员提供了一种高效、准确且可重复的方法来验证Web应用程序的功能和稳定性&#xff0c;我们一起来探索Web自动化测试工具的特点。 1.多浏览器兼容性&#xff1a; Web自…

Notes中使用邮件合并功能

大家好&#xff0c;才是真的好。 很久很久以前&#xff0c;就实现了Notes客户机的邮件合并功能&#xff0c;老实说&#xff0c;早得我都忘记当时是如何实现的了。 对了&#xff0c;我记起来一点&#xff0c;就是Excel 2003和之前的版本&#xff0c;还可以导出为Lotus 1-2-3格…

< 每日算法 - JavaScript解析:跳跃游戏 Ⅰ/ Ⅱ - 贪心 >

每日算法 - JavaScript解析&#xff1a;跳跃游戏 Ⅰ/ Ⅱ - 贪心 跳跃游戏 Ⅰ① 任务描述&#xff1a;> 示例一> 示例二 ② 题意解析③ 解决方案&#xff1a; 跳跃游戏 Ⅱ① 任务描述&#xff1a;> 示例一> 示例二 ② 题意解析③ 解决方案 往期内容 &#x1f4a8; 跳…

09_SPI-Flash 页写实验

09_SPI-Flash 页写实验 1. 实验目标2. 操作时序3. 模块框图3.1 顶层模块3.2 页写模块 4. 波形图5. RTL5.1 flash_pp_ctrl5.2 spi_flash_pp 6. Testbench6.1 tb_flash_pp_ctrl6.2 tb_spi_flash_pp 1. 实验目标 使用页写指令&#xff0c;向 Flash 中写入 N 字节数据&#xff0c;…