ccf_201712-2

题目

问题描述
  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。
  游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。
  例如,当n=5, k=2时:
  1号小朋友报数1;
  2号小朋友报数2淘汰;
  3号小朋友报数3;
  4号小朋友报数4淘汰;
  5号小朋友报数5;
  1号小朋友报数6淘汰;
  3号小朋友报数7;
  5号小朋友报数8淘汰;
  3号小朋友获胜。

  给定nk,请问最后获胜的小朋友编号为多少?
输入格式
  输入一行,包括两个整数nk,意义如题目所述。
输出格式
  输出一行,包含一个整数,表示获胜的小朋友编号。
样例输入
5 2
样例输出
3
样例输入
7 3
样例输出
4
数据规模和约定
  对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

 

    这道题写了挺长时间,主要还是考虑不充分结果屡次没有AC——问题在于用循环跳过已经剔除的人,该过程中没有考虑当到达边界条件时位置的归零问题;

 

解题思路

    开一个布尔型的数组表示参加游戏的人是否被剔除出游戏,初始值设为true表示在游戏中,定义一个计数变量cnt表示仍然在游戏中的人数、一个位置变量表示当前报数的是哪个人、当前报的数字i;

    如果循环中当前报的数字满足题设给出的剔除条件,则把数组中当前位置取假表示该位置的参赛者已经被剔除出游戏,循环中需要注意三个问题:

        1. 当位置变量到达人数的上限时表示此时报数的是最后一人,此时需要再从第一个人开始,因此需要将位置变量重新赋值为0;

        2. 需要保证每次操作时位置变量对应的布尔类型的数组中的值为true,也就是当前位置上的参赛者目前仍然再游戏中,否则进行循环直到访问到的参赛者仍然在在游戏中;

        3. 当计数变量为1时,表示游戏中仅剩一个参赛者,此时退出循环得出结果。

 

代码

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     bool per[1005];
 6     for (int i = 0; i < 1005; i++)
 7         per[i] = true;
 8     int n = 0, k = 0;
 9     cin >> n >> k;
10     int i = 1;
11     int cnt = n;
12     int loc = 0;
13     while (true) {
14         while (per[loc] == false) {
15             loc++;
16             if (loc >= n)
17                 loc = 0;
18         }
19         if (i % k == 0 || i % 10 == k) {
20             cnt--;
21             per[loc] = false;
22         }
23         i++;
24         loc++;
25         if (loc >= n)
26             loc = 0;
27         if (cnt == 1)
28             break;
29     }
30     for (int i = 0; i < n; i++) {
31         if (per[i] == true)
32             cout << i + 1 << endl;
33     }
34 
35     return 0;
36 }

 

转载于:https://www.cnblogs.com/moujun1001/p/9362666.html

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

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

相关文章

第9章-浮动

1.文档流 文档中可显示对象在排列时所占用的位置、空间 2.浮动的一般情况 3.浮动的特殊情况 4.浮动对文字的影响 5.float和inline-block的比较 6.清除浮动 &#xff08;1&#xff09;最后添加空标签 <div class"clear"><div> clear属性值:left r…

[css] translate3D有什么作用?

[css] translate3D有什么作用&#xff1f; 3d动画&#xff0c;启用GPU硬件加速个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[css] 如何形成BFC?

[css] 如何形成BFC&#xff1f; 根元素 float的值不为none overflow的值不为visible display的值为inline-block、table-cell、table-caption position的值为absolute或fixed个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很…

第8章-常用优先级和css3

一.优先级 1.选择器优先级 * < 标签 < class < id 2.样式优先级 行内样式 <div style""></div> 内部样式 <style type"text/css"></style> 外部样式 <link type"text/css" rel"stylesheet…

pandas 基础用法

pandas 是一个基于 Numpy 构建, 强大的数据分析工具包 主要功能 独特的数据结构 DataFrame, Series集成时间序列功能提供丰富的数学运算操作灵活处理缺失数据Series 一维数组 Series 是一种类似于一维数组的对象, 由一组数据和一组与之相关的数据标签(索引)组成 创建方式 pd.Se…

[css] 为什么float会导致父元素塌陷

[css] 为什么float会导致父元素塌陷 “当元素设置浮动后&#xff0c;会自动脱离文档流”&#xff0c; 翻译成白话就是说&#xff0c;元素浮动后&#xff0c;就不在整个文档流的管辖范围&#xff0c;那么它之前存在在父元素内的高度就随着浮动不复存在了&#xff0c;而此时父元…

Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)

本博客翻译搬运自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python&#xff0c;用于初入目标跟踪的新手学习&#xff0c;转贴请注明&#xff01; 使用OpenCV进行目标跟踪&#xff08;C/Python&#xff09; 在本教程里&#xff0c;我们将学习OpenCV3.0中引…

第7章-选择器+伪类

一.选择器 1.基础选择器 通配符选择器 标签/元素选择器 类选择器 id选择器 2.高级选择器 E,F (多元素选择器) 同时匹配所有E元素或F元素&#xff0c;E和F之间用逗号分隔 eg&#xff1a; div,p{width:100px;height:50px;} E F(后代选择器) 匹配所有属于E元素后代的F元…

[css] 什么是逐帧动画?

[css] 什么是逐帧动画&#xff1f; &#xff08;1&#xff09;相关联的不同图像&#xff0c;即动画帧&#xff1b;&#xff08;2&#xff09;连续播放。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论…

第5章-css选择器初级和背景

一、ID选择器与Class选择器的区别 区别 1&#xff1a;ID选择器只能在文档中使用一次,. class类选择器可以多次使用。 区别 2&#xff1a; id的权重大于class类的权重 二.background背景样式 1.background-color:规定要使用的背景颜色十六进制值 #CC0066 #000英文单词…

POJ 4979 海贼王之伟大航路 【状压dp】【北大ACM/ICPC竞赛训练】

该死的题让我想起来艾斯之死... 首先想到dp(i)代表从1到【i表示的这些岛屿】所花的最小时间&#xff0c;然后每次枚举最后一个岛屿以此缩小范围&#xff0c;但发现枚举了最后一个岛屿后没有办法转移&#xff0c;因为不知道倒数第二个岛屿是什么&#xff0c;随着倒数第二个岛屿的…

[css] 举例说明BFC会与float元素相互覆盖吗?为什么?

[css] 举例说明BFC会与float元素相互覆盖吗&#xff1f;为什么&#xff1f; BFC的区域不会与float的元素区域重叠 计算BFC的高度时&#xff0c;浮动子元素也参与计算 BFC就是页面上的一个隔离的独立容器&#xff0c;容器里面的子元素不会影响到外面元素&#xff0c;反之亦然个…

Sublime Text 3 、WebStorm配置实时刷新

本文所用软件版本Sublime Text 3(Build 3143)、WebStorm 2017.2.4(Build #WS-172.4155.35)、Google Chrome v61.0.3163.100&#xff0c;其他版本软件配置过程可能不一样&#xff0c;请知悉&#xff01; 一.Google Chrome安装LiveReload插件 1.下载插件 LiveReload 2.1.0 链…

#0 scrapy爬虫学习中遇到的坑记录

python 基础学习中对于scrapy的使用遇到了一些问题。 首先进行的是对Amazon.cn的检索结果页进行爬取&#xff0c;很顺利&#xff0c;无碍。 下一个目标是对baidu的搜索结果进行爬取 1&#xff0c;反爬虫 1.1 我先对ROBOTSTXT_OBEY进行设置&#xff0c;结果找到了scrapy的默认参…

[css] 使用css如何设置背景虚化?

[css] 使用css如何设置背景虚化&#xff1f; filter: blur(5px);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Sublime Text 3 、WebStorm配置护眼主题(浅绿色)

本文所用软件版本Sublime Text 3(Build 3143)、WebStorm 2017.2.4(Build #WS-172.4155.35)&#xff0c;其他版本软件配置过程可能不一样&#xff0c;请知悉&#xff01; 1.Sublime Text 3护眼主题 &#xff08;1&#xff09;下载配置文件 链接&#xff1a;http://pan.baidu.…

angular - 如何运行在起来 - 使用nginx

nginx下载地址&#xff0c;使用的是标准版的&#xff1a; 点击下载nginx nginx下载完后&#xff0c;解压 dist文件夹下面所有angular文件放入html文件夹中. 最后命令行cd到当前nginx.exe目录&#xff0c;启动命令&#xff1a;nginx 再配置一下conf文件夹下面的nginx.conf 再loc…

[css] 举例说明background-repeat的新属性值:round和space的作用是什么?

[css] 第 举例说明background-repeat的新属性值&#xff1a;round和space的作用是什么&#xff1f; space 背景图不会产生缩放&#xff0c;会被裁切 round 缩放背景图至容器大小&#xff08;非等比例缩放&#xff09;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…

Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)

在写下这篇文章的时候&#xff0c;我还在找工作。理解每一个真正对编程感兴趣的小伙伴的转行不易&#xff0c;于是就把自己这几个月搜索到的学习资料一一分享给大家。 3.数据库 MySQL5.7 Reference Manual https://dev.mysql.com/doc/refman/5.7/en/ SQL中主键与外键的定义和…

2018 Multi-University Training Contest 1 Balanced Sequence(贪心)

题意&#xff1a; t组测试数据&#xff0c;每组数据有 n 个只由 ( 和 ) 构成的括号串。 要求把这 n 个串排序然后组成一个大的括号串&#xff0c;使得能够匹配的括号数最多。 如()()答案能够匹配的括号数是 4&#xff0c;(()) 也是 4。 例如&#xff1a; n 2 ) )(( 你可以将其…