【CSP试题回顾】201712-2-游戏

news2024/9/19 10:58:28

CSP-201712-2-游戏

解题思路

代码实现了一个模拟游戏过程的算法,其中n个小朋友围成一圈,按照顺时针方向依次编号从1到n,然后按顺时针方向依次报数。每当报的数是k的倍数或者个位数是k时,报数的小朋友会被淘汰。游戏继续进行,直到只剩下一个小朋友,这个小朋友就是游戏的赢家。下面是具体的解题思路:

  1. 初始化变量
参数描述
n参与游戏的小朋友总数
k特定的数字,小朋友报的数如果是这个数的倍数或其个位数是这个数则被淘汰
i当前报数的小朋友在数组中的索引
num当前报的数
arr存储还在游戏中的小朋友的编号的向量
  1. 填充数组:使用一个循环,将1到n的每个数字添加到数组arr中,这表示初始时所有的小朋友都在游戏中。

  2. 游戏循环:使用while循环模拟游戏过程。这个循环会一直执行,直到arr数组的大小缩减到1,即只剩下一个小朋友,游戏结束。

  3. 判断条件: 在循环中,程序首先将当前报的数num转换为字符串t,然后检查两个条件:

    • 如果numk的倍数(num % k == 0),或者
    • num的个位数(t[t.size() - 1] - '0')等于k

    如果满足以上任一条件,则当前报数的小朋友(arr[i])被淘汰,从数组中删除。

  4. 更新索引和报数

    • 如果一个小朋友被淘汰,i的值会保持不变,但由于数组的大小减少了,我们需要对i执行模数组新大小的操作(i %= arr.size()),以确保i不会超出范围。
    • 如果当前小朋友没有被淘汰,那么i就递增1(并在必要时绕回到数组的开头),同时num(报的数)也递增1。
  5. 输出胜利者: 当数组中只剩下一个元素时,游戏结束,循环退出。最后剩下的这个元素(arr[0])就是获胜的小朋友的编号,输出这个编号。

完整代码

#include<iostream>
#include<vector>
#include<string>
using namespace std;

int n, k, i, num = 1;

int main() {    
    cin >> n >> k;
	vector<int>arr(n);
	for (int i = 0; i < n; i++) {
		arr[i] = i + 1;
	}

	while (arr.size() != 1)
	{
		string t = to_string(num);
		if (num % k == 0) {
			arr.erase(arr.begin() + i);
			i %= arr.size();
		}
		else if ((t[t.size() - 1] - '0') == k) {
			arr.erase(arr.begin() + i);
			i %= arr.size();
		}
		else i = (i + 1) % arr.size();
		num++;
	}
	cout << arr[0];
    return 0;
}

请添加图片描述

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

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

相关文章

关于使用elementUI中select和el-checkbox-group的回显问题

网上看到很关于这个的问题回显&#xff0c;各式各样&#xff0c;没有绝句自己的问题&#xff0c;总重问题出在数据格式上 select和el-checkbox-group el-checkbox 都是字符串数组格式&#xff1a;[12,13,....]; 我写的格式是id是选中的id组成的回显数据格式&#xff1b; 如…

【爬虫】requests.post请求中的data和json使用区别

请求体是键值对形式&#xff08;无花括号&#xff09;&#xff0c;请求时需要使用data参数处理。 代码&#xff1a; data {...} ret requests.post(url, headersheaders, datadata)请求体是字典形式&#xff08;有花括号&#xff09;&#xff0c;请求时需要使用json参数处理。…

第16届大广赛XPPen都有哪些参赛命题

截至到发文时间&#xff0c;2024年3月14日&#xff0c;第16届大广赛已经累计公布了6个品牌命题&#xff0c;本文就给大家介绍一下XPPen命题的详细细节。 XPPen为汉王友基旗下全球知名数字艺术创新品牌&#xff0c;专注消费级用户创作需求&#xff0c;品牌产品覆盖全球160多个国…

C/C++中strcpy,strcat,strstr以及strncpy,strncat,strncmp的使用

1、首先我们来介绍strcpy的使用从这个函数的名字来看它应该是属于字符串的拷贝&#xff0c;string copy。 那么这个函数是怎么用的呢&#xff1f;下面我么来介绍她的基本结构。 char * strcpy ( char * destination, const char * source );由上述可知它需要两部分 一个是目标字…

如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务…

【Python】新手入门学习:详细介绍里氏替换原则(LSP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍里氏替换原则&#xff08;LSP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyT…

ArcGIS学习(十五)用地适宜性评价

ArcGIS学习(十五)用地适宜性评价 本任务给大家带来的内容是用地适宜性评价。 用地适宜性评价是大家在平时工作中最常接触到的分析场景之一。尤其是在国土空间规划的大背景下,用地适宜性评价变得越来越重要。 此外,我们之前的任务主要是使用矢量数据进行分析。本案例是主讲…

vs2022 错误(活动) E1696 无法打开 源 文件 “bits/stdc++.h“解决办法

一、创建stdc.h的头文件 随便找一个项目->添加->新建项->头文件->命名为stdc.h->添加 二、复制下述代码->保存 ​ // C includes used for precompiling -*- C -*-// Copyright (C) 2003-2017 Free Software Foundation, Inc. // // This file is part of …

镭雕机:如何利用激光技术实现高质量的产品标记

镭雕机是一种利用激光技术实现高质量产品标记的设备。它通过激光束在各种不同的物质表面进行精确的打标&#xff0c;可以产生永久性的标记效果&#xff0c;这些标记不仅精美&#xff0c;而且具有高度的精度和清晰度。以下是镭雕机如何利用激光技术实现高质量产品标记的详细过程…

java枚举与模拟方法

枚举 枚举的定义 枚举算法&#xff08;穷举算法&#xff09;&#xff0c;这种算法就是在解决实际问题的时候去使用所有的方式去解决这个问题&#xff0c;会通过推理去考虑事件发生的每一种可能性&#xff0c;最后推导出结果 优点 简单粗暴&#xff0c;他暴力的枚举所有可能&…

Unity之PUN实现多人联机射击游戏的优化

目录 &#x1f3ae;一、 跳跃&#xff0c;加速跑 &#x1f3ae;二、玩家自定义输入昵称 &#x1f345;2.1 给昵称赋值 &#x1f345;2.2 实现 &#x1f3ae;三、玩家昵称同步到房间列表 &#x1f345;3.1 获取全部玩家 &#x1f345;3.2 自定义Player中的字段 &#…

【代码随想录 | 数组 03】有序数组的平方

文章目录 3.有序数组的平方3.1题目3.2思路3.2.1暴力解法3.2.2双指针法 3.有序数组的平方 3.1题目 977.有序数组的平方——力扣题目链接 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示…

Python 3.6.6安装方法(保留环境中python2不受影响)

前言&#xff1a;因为Linux系统下自带了python2的版本&#xff0c;所以我们要用Python3的话需要自己构建安装。并保证某些已经存在的服务可以正常使用python2。 具体步骤如下&#xff1a; 一、python3.6.6 安装 1.安装依赖包&#xff1a; yum -y install zlib zlib-devel yu…

借助资本力量创业:企业扩张能力、融资方式及创投公司投资条款的考量

在创业的道路上&#xff0c;借助资本的力量是许多企业实现快速扩张和持续发展的重要途径。然而&#xff0c;如何有效利用资本&#xff0c;确保企业在扩张过程中稳健前行&#xff0c;就需要创业者对企业扩张能力、融资方式以及创投公司的投资条款进行深入理解和审慎考量。 一、企…

LeetCode28.找出字符串中第一个匹配项

28.找出字符串中第一个匹配项 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入…

QT 如何在QPushButton上播放gif(终极版)

在平时浏览网站&#xff0c;或者使用软件的时候&#xff0c;经常可以见到&#xff1a;在点击了某个按钮之后&#xff0c;按钮上会显示动图以及提示文字。在QT中&#xff0c;比较常见且简单的做法就是&#xff1a;给按钮设置一个layout&#xff0c;然后在这个layout里面添加QLab…

ListBox显示图片的一些问题

相关&#xff1a;http://t.csdnimg.cn/xTnu8 显示图片的方案就是&#xff1a;自定义一个Photo类&#xff0c;里面有属性Source&#xff1b;View再绑定ViewModel中的Photo集合&#xff0c;再到View中给ListView设置数据模板 关键点&#xff1a;这样做很容易忘记写数据模板 数据…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…

docker部署在线音乐播放器

YesPlayMusic是一款高颜值的第三方网易云播放器 部署 下载镜像 docker pull fogforest/yesplaymusicdocker-compose部署 vim docker-compose.yaml version: 3 services:yesplaymusic:container_name: yesplaymusicimage: fogforest/yesplaymusicports:- 7950:80restart: a…

wxss和css的区别

目录 1. 语法差异 2. 尺寸单位 3. 样式导入 WXSS 示例代码&#xff1a; CSS 示例代码&#xff1a; 4. 组件和属性的支持 总结 WXSS (WeiXin Style Sheets) 和 CSS (Cascading Style Sheets) 都是用于描述文档样式的语言&#xff0c;但它们在微信小程序和网页开发中有一些…