news 2026/8/14 11:58:35

2021年CSP-J初赛真题及答案解析(完善程序1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2021年CSP-J初赛真题及答案解析(完善程序1)

2021年CSP-J初赛真题及答案解析(完善程序1)

第1题

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

试补全模拟程序。

01#include<iostream>0203usingnamespacestd;0405constintMAXN=1000000;06intF[MAXN];0708intmain(){09intn;10cin>>n;11inti=0,p=0,c=0;12while(){13if(F[i]==0){14if(){15F[i]=1;16;17}18;19}20;21}22intans=-1;23for(i=0;i<n;i++)24if(F[i]==0)25ans=i;26cout<<ans<<endl;27return0;28}

① 处应填( )
A.i < n
B.c < n
C.i < n - 1
D.c < n - 1

② 处应填( )
A.i % 2 == 0
B.i % 2 == 1
C.p
D.!p

③ 处应填( )
A.i++
B.i = (i + 1) % n
C.c++
D.p ^= 1

④ 处应填( )
A.i++
B.i = (i + 1) % n
C.c++
D.p ^= 1

⑤ 处应填( )
A.i++
B.i = (i + 1) % n
C.c++
D.p ^= 1


正确答案

  • ① 选Dc < n - 1
  • ② 选Cp
  • ③ 选Cc++
  • ④ 选Dp ^= 1
  • ⑤ 选Bi = (i + 1) % n

详细解析

变量含义:

  • F[i] == 0表示编号i的人还在圈中;F[i] == 1表示已离开。
  • c记录已经离开的人数。
  • p记录当前这个人应该报的数(只能是01),初始为0
  • i记录当前正在检查的人的编号。

逐空分析:

  1. ① 循环条件
    游戏进行到圈中只剩下一个人时停止。总人数为n,已离开c人,剩下n - c人。当n - c > 1时继续循环,即c < n - 1,所以选D

  2. ② 判断是否离开
    规则是报到1的人离开。当前人还在圈中(F[i] == 0已满足),此时判断他报的数p是否为1。若p为真(即1)则条件成立,所以填p,选C

  3. ③ 离开后的操作
    当有人报到1并离开时,标记F[i] = 1,同时离开人数c必须增加 1,所以此处应写c++,选C

  4. ④ 报数交替
    无论当前这个人是否离开,只要他还在圈中(F[i] == 0),处理完后报数要在01之间切换,为下一个人准备。用p ^= 1实现翻转,选D

  5. ⑤ 移动指针
    处理完当前编号i后,需要移动到下一个人。因为是围成圈,编号循环递增,所以写i = (i + 1) % n,选B


更多内容请关注专栏:信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转


【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 11:57:05

跨域问题终极解决方案:从CORS原理到Node.js/Spring Boot/Nginx实战配置

1. 项目概述&#xff1a;为什么跨域问题如此“磨人”&#xff1f;做后端开发或者全栈开发的朋友&#xff0c;估计没少被“跨域”这两个字折腾过。你这边前端页面写得飞起&#xff0c;接口逻辑也自认为天衣无缝&#xff0c;结果浏览器控制台一个鲜红的“Access-Control-Allow-Or…

作者头像 李华
网站建设 2026/8/14 11:55:52

2024电视直播方案:基于IPv6与m3u源的自建全平台指南

最近几个月&#xff0c;身边好几个朋友都跟我抱怨&#xff0c;家里的电视盒子越来越“鸡肋”。要么是预装的直播软件突然失效&#xff0c;要么是频道列表越来越少&#xff0c;想看个清晰稳定的央视、卫视直播&#xff0c;要么得开会员&#xff0c;要么得忍受卡顿和低画质。他们…

作者头像 李华
网站建设 2026/8/14 11:53:03

呆滞库存怎么处理?3种清理方法,盘活积压资金

【摘要】呆滞库存是压在仓库里的"死钱"——占着地方、套着资金、还可能过期。本文给出3种切实可行的清理方法&#xff0c;帮你盘活积压资金。1 什么是呆滞库存定义&#xff1a;长期&#xff08;如超过90天/180天&#xff09;没有出入库动态、周转率极低的库存商品。…

作者头像 李华
网站建设 2026/8/14 11:52:49

M3U8视频下载全攻略:多线程并发与批量处理实战

你是否遇到过这样的场景&#xff1a;想下载一个在线视频教程、保存一段直播回放&#xff0c;或者备份某个网站上的系列课程&#xff0c;却发现浏览器右键“另存为”完全无效&#xff1f;页面上播放流畅的视频&#xff0c;背后往往不是单一的.mp4文件&#xff0c;而是一个名为M3…

作者头像 李华
网站建设 2026/8/14 11:51:53

5分钟上手InfoSpider:拿回分散在24个平台的个人数据,就这么简单

5分钟上手InfoSpider&#xff1a;拿回分散在24个平台的个人数据&#xff0c;就这么简单 【免费下载链接】InfoSpider INFO-SPIDER 是一个集众多数据源于一身的爬虫工具箱&#x1f9f0;&#xff0c;旨在安全快捷的帮助用户拿回自己的数据&#xff0c;工具代码开源&#xff0c;流…

作者头像 李华