【ccf2017-12-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,意义如题目所述。

输出格式

    输出一行,包含一个整数,表示获胜的小朋友编号。对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

个人感悟

  模拟题标记法贼好用......

 1 #include <bits/stdc++.h>
 2 int vis[1005];
 3 using namespace std;
 4 int main()
 5 {
 6     int n, k, i;
 7     cin >> n >> k;
 8     int num = 0, c = 0;//num是剔除的人数
 9     while(num != n - 1)
10     {
11         for(i = 1; i <= n; i++)
12         {
13             if(!vis[i])
14             {
15                 c++;
16                 if(c % 10 == k || c % k == 0)
17                 {
18                     vis[i] = 1;
19                     num++;
20                     if(num == n - 1)
21                         break;
22                 }
23             }
24         }
25     }
26     for(i = 1; i <= n; i++)
27         if(!vis[i]) break;
28     printf("%d\n", i);
29     return 0;
30 }

  

原文地址:https://www.cnblogs.com/lesroad/p/8548952.html

时间: 2024-11-14 04:32:42

【ccf2017-12-2】游戏(模拟)的相关文章

Android技术12:NDK模拟登陆

由于Android应用程序大多使用Java编写,所有很容易通过反编译获取源代码,因此为了保持核心算法,逻辑的安全性,大多应用程序将该部分使用c或c++实现,例如:用户的登陆,底层采用c或c++代码编写.下面将演示简单的c语言验证用户名和密码正确性,实现登录. 1.创建Android应用程序 创建过程与一般android应用程序类似,添加2个EditText和1个Button,示例图如下 布局文件 1 <LinearLayout xmlns:android="http://schemas.a

仿苹果电脑任务栏菜单&amp;&amp;拼图小游戏&amp;&amp;模拟表单控件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

P1312 Mayan游戏 [模拟][搜索]

P1312 Mayan游戏 这道题跟斗地主都是大模拟啊!稍微挂一点可能就爆零了! 图肯定能存,直接二维数组扔进去即可. 然后套dfs模板,搜索就先照那样搜. 核心操作有两个:一个是判断那些块可以消掉,一个是把那些可以消的消了. 第一个操作的核心代码是这样的: for(int i = 1; i <= 5; i++) { for(int j = 1; j <= 7; j++) { if(G[i][j] && i - 1 >= 1 && i + 1 <=

《C++ Primer Plus》12.7 队列模拟 学习笔记

Heather银行打算在Food Heap超市开设一个自动柜员机(ATM).Food Heap超市的管理者担心排队使用ATM的人流会干扰超市的交通,希望限制排队等待的人数.Heather银行希望对顾客排队等待的事件进行估测.要编写一个程序来模拟这种情况,让超市的管理者可以了解ATM可能招骋的影响.对于这种问题,最自然的方法是使用顾客对列.队列是一种抽象的数据类型(Abstract Data Type,ADT),可以存储有序的项目序列.新项目被添加在队尾,并可以删除队首的项目.队列有点像栈,单栈在

睡觉请关灯 &nbsp; 游戏模拟实现

 首先,关于这个的基本讨论已过一阶段了.现在就是合成版  以后做mcf java等的界面. 留了 一个bug就是 电脑解决完后 会多打印几个矩阵. 改进的地方,1:增加了一种电脑解法,         2:记录用了自增栈   #include"c.h" #include"c++.h" #define  MAX  5 #define N   10 typedef int  elem_type;   class Stack { public:   Stack()  { 

2018.2.12 省选模拟赛

题目大意 (题目很简洁了,不需要大意) 其实显而易见地可以发现,当被卡一次后后面的路程都是固定了的. 可以用类似动态规划的思想来进行预处理.现在的问题就是怎么知道在某个位置刚等完红灯然后出发会在哪个路口再次被卡. 尝试画一画图: 其中横轴表示位置,纵轴表示时间,长方体表示红灯时段.有用的部分长度只有$r + g$,所以在模意义下弄一下就可以减少很多重复和无用状态: 但是这样仍然不好处理上面提到的问题,考虑让线段横着走,第一个撞着的长方形就是答案.为了实现这个目标,就每个长方形向下移动一段(移动的

使用Marbles弹珠游戏模拟区块链资产转移

本实践基于华为云区块链服务,以基于区块链的弹珠资产转移Marbles Demo部署为例进行演示,旨在帮助您了解链代码的基础知识以及如何使用Fabric网络开发应用程序,帮助您快速上手使用. 关于Demo这是一个简单的资产转移演示,多个用户之间可以创建并相互转移弹珠资产,同时您还能看到详细的交易信息及区块链信息.界面如下: ×××如果您需要查看Demo应用的源码,请点击下载源码进行下载查看,希望对您的应用开发有所帮助. 准备工作华为云区块链服务是基于容器所构建的集群进行部署的,同时为使外网能够正常

03-02自底向上风格_模拟游戏

模拟游戏 模拟井字棋游戏 九个格子中双方轮流落子. 其中一方画x符号,另一方画o符号. 开始时,9个格子都是空的. 程序显示当前局面,提示某一方输入落子位置,然后显示局面,再提示另一方. 当某方棋子连成直线,该方获胜! 例如: 初始: _ _ _ _ _ _ _ _ _ o 输入位置: 1,1 o _ _ _ _ _ _ _ _ x 输入位置: 2,2 o _ _ _ x _ _ _ _ 当某一方出现了3个棋子连成直线或对角线,则该方获胜 标准答案: import java.util.*; cl

初级模拟电路:1-2 PN结与二极管

1.   掺杂半导体 上面我们分析了本征半导体的导电情况,但由于本征半导体的导电能力很低,没什么太大用处.所以,一般我们会对本征半导体材料进行掺杂,即使只添加了千分之一的杂质,也足以改变半导体材料的导电特性.通过加入不同特性的掺杂的元素,可以做出两种不同性质的半导体材料:n型半导体材料和 p型半导体材料,下面分别予以介绍. (1) n型半导体 n型半导体材料是通过对本征半导体掺入有5个价电子的元素得到的,常见的5价元素有:锑(Sb).砷(As).磷(P),下面以锑作为掺杂元素.硅作为本征基片来举