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

CSP-201712-2-游戏

CSP-201712-2-游戏

解题思路

  1. 初始化变量:定义整数变量nk,分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num(用来记录当前报的数)和peopleIndex(用来记录当前报数的小朋友的索引)。

  2. 初始化小朋友数组:通过一个循环,创建一个peopleArr数组,这个数组中的每个元素代表一个小朋友的编号,从1到n。

  3. 游戏逻辑处理:使用一个while循环来模拟报数和淘汰过程。这个循环会一直执行,直到只剩下一个小朋友(即peopleArr的大小变为1)。

  4. 淘汰规则:在每次循环中,首先检查当前报的数(num)是否满足淘汰条件:如果numk的倍数或者num的个位数等于k,那么当前报数的小朋友就会被淘汰。如果满足淘汰条件,使用erase方法从peopleArr中移除当前小朋友,并且人数n减一。如果被淘汰的是当前队列的最后一个人,则peopleIndex会通过% n自动回到队列开头。

  5. 更新报数和索引:如果当前小朋友没有被淘汰,那么报数索引peopleIndex将向前移动一位(考虑到循环队列,所以使用% n)。不管是否淘汰,每次循环结束时报数num都会递增。

完整代码

#include<iostream> 
#include<vector>
using namespace std;
int main() {int n, k;cin >> n >> k;int num = 1, peopleIndex = 0;vector<int>peopleArr(n);// 人员编号for (int i = 0; i < n; i++){peopleArr[i] = i + 1;}while (true){if (peopleArr.size() == 1) // 终止条件:只剩一个人{break;}if (num % k == 0 || num % 10 == k) { // 淘汰规则peopleArr.erase(peopleArr.begin() + peopleIndex); // 移除队伍n--; // 总人数-1peopleIndex = peopleIndex % n; // 更新循环队列}else{peopleIndex = (peopleIndex + 1) % n; // 更新循环队列}         num++; // 报数+1}cout << peopleArr[0];return 0; 
}

请添加图片描述

http://www.lryc.cn/news/310612.html

相关文章:

  • 记录SSM项目集成Spring Security 4.X版本 之 加密验证和记住我功能
  • [AutoSar]BSW_Com09 CAN driver 模块FULL(BASIC)CAN、FIFO选择
  • WPF真入门教程30--顺风物流单据管理系统
  • Elasticsearch:向量相似度计算 - 可笑的速度
  • 两数相加的问题
  • 微信小程序的单位
  • 软考通过率真的低吗?
  • 国际视频编解码标准提案下载地址
  • 程序员是如何看待“祖传代码”的?
  • Python爬虫之爬取并下载哔哩哔哩视频
  • python 脚本设置输出颜色
  • 安卓websocket(客服端和服务端写在app端) 案例
  • C++面试宝典第34题:整数反序
  • 微信商城小程序设计
  • 如何合理布局子图--确定MATLAB的subplot子图位置参数
  • 【MySQL】基于Docker搭建MySQL一主二从集群
  • k8s 集群调度,标签,亲和性和反亲和性,污点和容忍,pod启动状态 排错详解
  • Idea 启动报错 failed to create jvm:jvm path url
  • 20款Visual Studio实用插件推荐
  • 基于SpringBoot的在线拍卖系统
  • “互动+消费”时代,借助华为云GaussDB重构新零售中消费逻辑
  • AI大全-通往AGI之路
  • CSS中如何解决 1px 问题?
  • IO 与 NIO
  • YOLOv应用开发与实现
  • 【C语言】熟悉文件基础知识
  • 信息系统安全与对抗-作业2
  • 【软考高项】【计算专题】- 5 - 进度类 - 横道图/甘特图
  • Ubuntu20.04使用XRDP安装原生远程桌面
  • uniapp:启动图 .9png 制作教程