当前位置: 首页 > news >正文

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624

在这里插入图片描述

2021 CSP-J 完善程序3

1 完善程序 (单选题 ,每小题3分,共30分)

(Josephus问题)有n个人围成一个圈,依次标号0至n-1。从0号开始,依次 0,1,0,1…交替报数,报到1的人会离开,直至只剩下一个人。求最后剩下人的编号

#include<stdio.h>const int MAXN=1000000;
int F[MAXN];int main(){int n;scanf("%d",&n);int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}int ans=-1;for(i=0;i<n;i++)if(F[i]==0)ans=i;printf("%d\n",ans);return 0; 
} 

34.①处应填( )

A. i<n

B. c<n

C. i<n-1

D. c<n-1

35.②处应该填( )

A. i%2==0

B. i%2==1

C. p

D. !p

36.③处应该填( )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

37.④处应该填( )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

38.⑤处应该填( )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

2 相关知识点

1) 异或运算

异或运算(XOR)是一种基本的数学运算符,应用于逻辑运算,其数学符号为“⊕”,计算机符号为“xor”

异或运算的运算法则为:如果两个值不相同,则异或结果为1;如果两个值相同,则异或结果为0

//示例
2 xor 3 = 1
具体过程如下
2 对应二进制 0010
3 对应二进制 001100100011
xor
----------0001

C++语言中 异或符号为 ^

p^=1等价p=p^1p为0时 p^1=0^1=1
具体过程如下
0对应二进制为 0000
1对应二进制为 000100000001
xor
----------0001p为1时 p^1=1^1=0
具体过程如下
1对应二进制为 000100010001
xor
----------0000

2) 约瑟夫问题

约瑟夫问题特征是有环,到最大人数后重新数,因此使用数组模拟约瑟夫问题时,达到最大需要从头开始

一轮需要有一人出去,需要一个变量标识一轮的开始结束

需要保留1人,需要一个变量统计出去的人数,进而和总人数比较

3 思路分析

34.①处应填( D )

A. i<n

B. c<n

C. i<n-1

D. c<n-1

分析

/*模拟每个人的位置,到达最大位置,重新开始p表示2人出去1人的一轮对应的值,即0 1,由于只有2次,所以当前人p为0时,下一个人p就为1c出去的人数
*/
int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}
/*由于c的初始值为0,即c为0时可以出去1人,接着c为1时继续判定可以出去1人,加上前面c为0时出去1人,总共可以出去2人c为n-2时可以出去n-1人,c为n-1时可以出去n人目标需要出去n-1人,c最大为n-2,所以判定条件为c<n-1
*/

35.②处应该填( C )

A. i%2==0

B. i%2==1

C. p

D. !p

分析

/*模拟每个人的位置,到达最大位置,重新开始p表示2人出去1人的一轮对应的值,即0 1,由于只有2次,所以当前人p为0时,下一个人p就为1c出去的人数
*/
int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}
/*for(i=0;i<n;i++)if(F[i]==0)ans=i;根据上面代码可知,输出ans是剩余的人的编号,判定是F[i]==0,所以出去的人是F[i]==1F[i]==0 改为 F[i]=1; 说明是F[i]=1时标记为出去此处是判定出去条件成立,由于是0 1 中,1出去,p初始为0,所以只有p为true或为1时才出去因此选C
*/

36.③处应该填( C )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

分析

/*模拟每个人的位置,到达最大位置,重新开始p表示2人出去1人的一轮对应的值,即0 1,由于只有2次,所以当前人p为0时,下一个人p就为1c出去的人数
*/
int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}
/*c为出去的人数,符号出去的条件c累加所以选C
*/

37.④处应该填( D )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

分析

/*模拟每个人的位置,到达最大位置,重新开始p表示2人出去1人的一轮对应的值,即0 1,由于只有2次,所以当前人p为0时,下一个人p就为1c出去的人数
*/
int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}
/*p变量模拟01变化值,下1个为0,再下1个为1,只要数数,就会变化:0变1,1变0p^=1 等价 p = p^1;  -- 0通过p^1可以变为1,1通过p^1可以变为0所以选D
*/

38.⑤处应该填( B )

A. i++

B. i=(i+1)%n

C. c++

D. p^=1

分析

/*模拟每个人的位置,到达最大位置,重新开始p表示2人出去1人的一轮对应的值,即0 1,由于只有2次,所以当前人p为0时,下一个人p就为1c出去的人数
*/
int i=0,p=0,c=0;while(①){if(F[i]==0){if(②){F[i]=1;③;}④}⑤;}
/*通过对n取余,保证出去下标不会超过n,用数组模拟环所以选B
*/

相关文章:

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624 2021 CSP-J 完善程序3 1 完善程序 (单选题 &#xff0c;每小题3分&#xff0c;共30分) &#xff08;Josephus问题&#xff09;有n个人围成一个圈&#xff0c;依次标号0至n-1。从0号开始&#xff0c;依次 0&#xff0c;1&#xff0c;0&#…...

【计算机视觉】人脸算法之图像处理基础知识(六)

图像直方图 图像直方图是描述图像中像素强度分布的一种统计图表&#xff0c;它是图像处理和计算机视觉领域中一个非常基础且重要的概念。图像直方图通常用于分析图像的亮度、对比度特性&#xff0c;以及在图像增强、阈值分割、特征提取等多种图像处理任务。 import cv2 impor…...

仓颉编程语言入门

华为在 2024 年 6 月 21 日的华为开发者大会上&#xff0c;华为终端 BG 软件部总裁龚体正式官宣了华为自研仓颉编程语言&#xff0c;并发布了 HarmonyOS NEXT 仓颉语言开发者预览版。 仓颉编程语言文件后缀名为 .cj, 以下是第一个入门代码输出&#xff1a;你好&#xff0c;仓颉…...

在前端项目中,如何处理错误和异常?

在前端项目中&#xff0c;如何处理错误和异常&#xff1f; 在前端项目中&#xff0c;处理错误和异常是至关重要的&#xff0c;它能确保应用程序的稳定性和用户体验。以下是一些常见的方法&#xff1a; try-catch-finally结构&#xff1a;使用JavaScript的try/catch块来捕获并…...

Ubuntu系统下修改网卡IP地址

Ubuntu系统下修改网卡IP地址 一、Ubuntu系统介绍1.1 Ubuntu简介1.2 Ubuntu网络配置方式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、配置网卡IP地址4.1 备份网卡配置文件4.2 查看当前IP地址4.3 修改…...

Scrapy如何对爬虫数据进行清洗和处理?

爬虫数据处理是数据采集应用中至关重要的一步。scrapy是一种流行的python爬虫框架&#xff0c;可以帮助我们快速高效地从网页中提取所需信息。但是&#xff0c;我们经常面临的一个问题是数据的质量低劣&#xff0c;存在各种噪声和错误&#xff0c;这使得它们难以用于后续分析和…...

Linux:基础IO(三.软硬链接、动态库和静态库、动精态库的制作和加载)

上次介绍了基础IO&#xff08;二&#xff09;&#xff1a;Linux&#xff1a;基础IO&#xff08;二.缓冲区、模拟一下缓冲区、详细讲解文件系统&#xff09; 文章目录 1.软硬链接1.1硬链接1.2软链接使用场景 2.动态库和静态库1.1回顾1.2静态库的制作和使用为什么要有库制作者角度…...

低价可转债崩盘,发生了什么?

下跌不在于“出库”&#xff0c;甚至不在于“风险”。问题更多在于交易层面&#xff0c;何时能积聚更多的左侧资金并成功过渡至右侧。 低价券怎么了&#xff1f; 如果说6月初主要是小微盘品种的退市风险&#xff0c;后来是一些评级下调的品种&#xff0c;到本周&#xff0c;已…...

【面试题】马上金九银十了,简历该准备起来了,面试题你准备好了吗 ?浅谈 JS 浅拷贝和深拷贝

代码展示 let obj_old {name: Tom,age: 15,favorite: {food: bread,drink: milk} } let obj_new {...obj_old} console.log(obj_old obj_new) // false console.log(obj_old.name obj_new.name) // true console.log(obj_old.favorite obj_new.favorite) // true3. Ar…...

最新OPPO 真我手机 一加手机 使用adb命令永久关闭系统更新教程

使用adb命令永久关闭系统更新 一、先了解手机系统二、Android 11 以下使用adb 命令永久关闭系统更新1、adb 官方下载2、小白开启 USB 调试模式教程&#xff08;熟手跳过&#xff09;三、Android 12 以上使用adb 命令永久关闭系统更新什么您还是不会弄&#xff01;赞赏我&#x…...

OnlyOffice:现代办公的最佳选择

目录 安装 使用 评价 对比&#xff08;与WPS&#xff09; 总结 在当今的数字化办公时代&#xff0c;选择一款功能全面且易于使用的办公软件至关重要。OnlyOffice作为一款现代化的办公软件&#xff0c;凭借其强大的功能和友好的用户体验&#xff0c;逐渐成为了众多企业和个…...

【收藏】2024年必备相图数据库资源集锦!

在材料化工领域&#xff0c;相图不仅仅是一个简单的图表&#xff0c;它是一个强大的工具&#xff0c;为材料科学家和工程师提供了深入理解材料行为的窗口。从选择合金元素及其比例的初步阶段&#xff0c;到后续的加工方法选择和热处理工艺的确定&#xff0c;相图都扮演着至关重…...

Zookeeper 二、Zookeeper环境搭建

Zookeeper安装方式有三种&#xff0c;单机模式和集群模式以及伪集群模式 单机模式&#xff1a;Zookeeper只运行在一台服务器上&#xff0c;适合测试环境集群模式&#xff1a;Zookeeper运行于一个集群上&#xff0c;适合生产环境&#xff0c;这个计算机集群被称为一个“集合体”…...

Web3 学习

之前学习 web3&#xff0c;走了不少弯路&#xff0c;最近看到了 hackquest&#xff0c;重新刷了一遍以太坊基础&#xff0c;感觉非常nice&#xff0c;而且完全免费&#xff0c;有需要的可以试试&#xff0c;链接hackquest.io。...

Grafana+Prometheus(InfluxDB)+Jmeter使用Nginx代理搭建可视化性能测试监控平台

前言 在这篇博客文章中&#xff0c;将分享JMeter > Prometheus(InfluxDB) > Grafana的集成&#xff0c;以及Nginx端口反向代理各服务的端口。 背景 在JMeter插件库中&#xff0c;有一些后端监听器可供Kafka、ElasticSearch和Azure使用。默认情况下&#xff0c;JMeter支…...

web学习笔记(六十六)项目总结

目录 1. Suspense标签 2.发布订阅者模式 3.pinia的使用 4.在请求过来的数据添数据 5.设置token和取token 6. 实现触底加载 7.导航守卫判断登录状态。 1. Suspense标签 Suspense主要用于用于处理异步组件加载和数据获取。&#xff0c;使用这个标签可以允许你在组件等待数…...

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇域控系统提权NetLogonADCSPACKDC永恒之蓝CVE漏洞

红队内网攻防渗透 1. 内网横向移动1.1 横向移动-域控提权-CVE-2020-1472 NetLogon1.2 横向移动-域控提权-CVE-2021-422871.3 横向移动-域控提权-CVE-2022-269231.4 横向移动-系统漏洞-CVE-2017-01461.5 横向移动-域控提权-CVE-2014-63241. 内网横向移动 1、横向移动-域控提权-…...

VMware Workstation安装Windows Server2019系统详细操作步骤

虚拟机版本 VMware Workstation 16 Prp 16.2.5 build-20904516 实现操作 创建虚拟机 创建新的虚拟机 自定义->下一步 默认即可&#xff0c;下一步 稍后安装操作系统->下一步 按照图下所示选择好系统->下一步 设置好虚拟机名称和位置->下一步 默认即可&#xff0…...

HTML5【新特性总结】

HTML5【新特性总结】 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。…...

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...