玩石头游戏的必胜策略-2023年全国青少年信息素养大赛Python复赛真题精选

news2024/10/7 20:24:56

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

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

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

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

一.赛事说明

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

本届Python挑战赛是在线上举行,参赛选手登录大赛官网在指定页面完成答题并提交答案。评定成绩的依据是同时考虑得分和用时两个方面,首先是得分高者名次靠前,如果得分一样,则用时少者名次靠前。

2023年全国青少年Python编程挑战赛华南赛区(海南)复赛于2023年7月8日正式举行。采取的仍然是在线考试,一共有6道题,全是编程题,考试时间是90分钟。

今天超平老师分享的是第5题,玩石头游戏。

二.题目描述

题目背景:

你和你的朋友,两个人一起玩石头游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手,每一回合,轮到的人拿掉1-3块石头。拿掉最后一块石头的人就是获胜者,假设你们每一步都是最优解。

现在一共有n块石头,请判断你是否可以赢得游戏如果可以赢,输出win;否则,输出lose。

时间限制:1000ms

内存限制:256MB

输入描述:

输入一行一个正整数n,表示石头的个数。

输出描述:

如果可以赢,输出win;否则,输出lose

样例1:

输入:

4

输出:

lose

三.思路分析

这是一个典型的必胜策略问题,那什么是必胜策略问题呢?

我国民间一直流传着一个名叫“抢十八”的数学游戏:参与游戏的两人从1开始轮流报数,每人每次可报一个数或两个连续的数,谁先报到18,谁就获胜。

图片

例如,甲报“1”,乙报“2、3”;接着甲报“4、5”,乙报“6”(或6、7);……,谁报到“18”这个数,说明他抢到了18,就获胜。

本题中描述的玩石头游戏场景和这个如出一辙,对于n块石头,谁拿到最后一块石头,谁就获胜。

怎样才能在游戏中有必胜的可能呢?其中的秘诀又是什么呢?

首先,我们要清楚一点,对于必胜策略游戏,又可以分成如下两种:

  • 先取必胜

  • 后取必胜

本题的场景属于第一种,即先取必胜,最常用的解决思路是使用倒推法,假设n = 10,即一共有10块石头。

如果你要取第10块石头,那么就需要把7、8、9、10留给对方来取。

由于每人一次都可以取1 ~ 3块石头,如果对方取7,你可以取8、9、10,获胜,如果对方取7、8,你可以取9、10,仍然获胜,如果对方取7、8、9,你就可以取10,依然获胜。

此时意味着你需要拿到第6块石头,同理,你需要把3、4、5、6留给对方来取。

继续倒推,如果要把3、4、5、6留给对方,那么你需要拿到第2块石头,在这个过程中,出现了一系列的致胜点,如图:

图片

所以,你只要先拿掉第1块石头和第2块石头,在对方拿x( 1<= x <= 3)块石头后,你则拿 4 - x块石头,就可以确保获胜。

聪明的你,应该已经发现了,这里有周期现象,周期是几呢?

周期就等于每次可以取到石头的最大数量加上最小数量,即 3 + 1 = 4,而致胜点就是每一个周期的最后一个位置。

再来看一种情况,如果n = 12,即一共有12块石头,会出现什么情况呢。

根据上面的倒推思路,可以找到你的致胜点有4、8、12,如图:

图片

但是,由于你最多只能拿掉3块石头,因此作为先手的你,是无法拿到第一个致胜点4的,所以你是无法获胜的。

看到这里,你应该明白该怎么判断谁输谁赢了吧,其实只需要判断n是否为4的倍数,如果是,你是输家,如果不是4的倍数,你就是赢家。

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

四.编程实现

根据上面的思路分析,只需要使用取模运算即可,完整代码如下:

图片

代码比较简单,关键在于对原理的理解。

五.总结与思考

本题难度代码比较简单,考查的知识点主要包括:

  • 处理输入数据;

  • if...else双分支语句;

  • 取模运算符;

如果题目改为判断n是否为4的倍数,相信每个同学都可以快速写出程序,但是当切换到必胜策略游戏场景中,很多同学就无从下手了,这是为什么呢?

本题的难点在于对于题目的理解和分析,它考察的是孩子的逻辑分析能力和数学思维。这是小学3、4年级学生的题目,不过通常出现在数学思维或者奥数的教程中。

所以,超平老师经常强调,学习编程并不只是学习写代码这么简单,更多的是培养孩子的逻辑思维、数学思维和计算思维。

比如本题中的必胜策略,需要运用逻辑思维来进行推理,找到其中的规律,然后使用数学思维和数学知识来建立数学模型,最后借助编程来实现自动判断,这是3种思维的完美结合。

超平老师再给你留一道思考题:

有15枚棋子,甲乙两人轮流取,规定甲先取,每人每次至少取1枚,最多取2枚。如果谁取走最后一枚棋子谁输,那么谁有必胜策略?必胜策略是什么?

你还有什么巧妙的解决方案吗,欢迎和超平老师交流。

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

更多教程,可以移步至“超平的编程课”gzh。

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

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

相关文章

Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程

Tomcat 基本概述 Tomcat 服务器是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。它是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用…

融资融券开户条件和要求,融资融券开户具体流程

融资融券开户条件和要求&#xff1a;符合国家法律、行政法规规定&#xff0c;允许从事证券交易的个人和机构&#xff0c;个人客户需年满18周岁且具有完全民事行为能力&#xff0c;要求普通证券账户在公司从事证券交易不少于6个月&#xff0c;即开户需满6个月&#xff1b;拥有不…

【C++进阶】二叉树搜索树

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

十三、函数式编程(2)

本章概要 方法引用 Runnable 接口未绑定的方法引用构造函数引用 函数式接口 多参数函数式接口缺少基本类型的函数 方法引用 Java 8 方法引用没有历史包袱。方法引用组成&#xff1a;类名或对象名&#xff0c;后面跟 :: &#xff0c;然后跟方法名称。 interface Callable {…

系统架构设计师-计算机网络

目录 一、计算机网络技术概述 1、网络概述 2、网络有关指标 3、网络分类 4、5G技术 二、组网技术 1、交换技术 2、基本交换原理 三、TCP/IP协议簇 1、DHCP 2、DNS 四、网络规划与设计 一、计算机网络技术概述 1、网络概述 计算机网络的功能&#xff1a; &#xff08;1&…

项目经理升级却面临挑战?如何解决任务分解和成员职责不明难题

有一个朋友刚升任项目经理。但他这两天却一副愁眉不展的样子&#xff0c;因为他之前是做技术的&#xff0c;缺乏管理经验&#xff0c;在制定计划时没有合理的分解任务&#xff0c;并且没有明确项目成员的职责&#xff0c;导致项目在推进过程中项目进度不清晰。 项目管理涉及到…

Mendeley在linux中无法打开APPimage

原因:FUSE 库为用户空间程序提供了一个接口&#xff0c;可以将虚拟文件系统导出到 Linux 内核。由于缺少这个关键库&#xff0c;AppImage 无法按预期工作。 1 安装fuse,打开终端,输入命令 sudo apt install libfuse2 输入用户密码结,果如下 2 确保APPimage作为程序运行 右击…

在阿里云 linux 服务器上查看当前服务器的Nginx配置信息

我们可以通过命令 sudo nginx -t查看到nginx.conf的路径 可以通过 sudo nginx -T查看 nginx 详细配置信息&#xff0c;包括加载的配置文件和配置块的内容 其中也会包括配置文件的内容

【k8s】Kubernetes版本v1.17.3 kubesphere 3.1.1 默认用户登录失败

1.发帖&#xff1a; Kubernetes版本v1.17.3 kubesphere 3.11 默认用户登录失败 - KubeSphere 开发者社区 2. 问题日志&#xff1a; 2.1问题排查方法 &#xff1a; 用户无法登录 http://192.168.56.100:30880/ 2.2查看用户状态 kubectl get users [rootk8s-node1 ~]# k…

Java 多线程系列Ⅶ(线程安全集合类)

线程安全集合类 前言一、多线程使用线性表二、多线程使用栈和队列三、多线程下使用哈希表 前言 在数据结构中&#xff0c;我们学习过 Java 的内置集合&#xff0c;但是我们知道&#xff0c;我们学过的大多数集合类都是线程不安全的&#xff0c;少数如 Vector&#xff0c;Stack…

Fastjson_1.2.24_unserialize_rce漏洞复现

fastjson_1.2.24_unserialize_rce 说明内容漏洞编号CNVD-2017-02833漏洞名称FastJson < 1.2.24 远程代码执行漏洞评级高危影响范围1.2.24漏洞描述通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查修复方案升级组件&#xff0c;打补丁&#xf…

PWmat计算再发Science:用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂

文章信息 原标题: Ternary NiMo-Bi liquid alloy catalyst for efficient hydrogen production from methane pyrolysis 中文标题&#xff1a;用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂 作者&#xff1a;Luning Chen, Zhigang Song, Shuchen Zhang, Chung-Kai Chang…

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片&#xff1a; import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组&#xff08;彩色图片&am…

基于SSM的校园快递代取系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

两个好用的数据标注软件labelme和CVAT

我们使用yolov3、yolov4、yolov5、yolov8等训练自己的权重时&#xff0c;需要有大量标注好的数据集&#xff0c;这里有两个好用的数据标注软件labelme和CVAT 一、labelme labelme&#xff1a;https://github.com/wkentaro/labelme 这个软件用的比较多&#xff0c;但是会经常更…

10:00面试,10:06就出来了,问题问的实在有点变态

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降30%,…

poi-tl word模版生成、动态表格、坑点合集

一、配置 1、导入依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0</version></dependency>apache poi版本要对应 <dependency><groupId>org.apache.poi</…

Docker安装RabbitMQ集群_亲测成功

先安装Docker Centos7离线安装Docker 华为云arm架构安装Docker RabbitMQ集群模式介绍 RabbitMQ集群搭建和测试总结_亲测 RabbitMQ 有三种模式&#xff1a;单机模式&#xff0c;普通集群模式&#xff0c;镜像集群模式。单机模式即单独运行一个 rabbitmq 实例&#xff0c;而…

【LangChain系列 6】Prompt模版——自定义prompt模版

原文地址&#xff1a;【LangChain系列 6】Prompt模版——自定义prompt模版 本文速读&#xff1a; 自定义prompt模版 LangChain提供了很多默认的prompt模版&#xff0c;同时LangChain提供了两种基础prompt模版&#xff1a; 字符串prompt模版 对话prompt模版 基于这两种模版&…

1-5 AUTOSAR数据交换文件ARXML

目录 一、Arxml文件 二、各类ARXML文件 一、Arxml文件 arxml文件是AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;标准定义的XML文件&#xff0c;用于描述汽车电子系统中的软件组件、通信接口和参数配置等信息。 arxml文件的主要作用是在AUTOSAR架构下…