CCF CSP 201712-2 游戏

题目链接:http://118.190.20.162/view.page?gpid=T67

问题描述

  有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。

还是按照题目模拟就行了

 1 //CCF CSP 201712-2 游戏
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 int n,k,t,sum,st,flag;
 7 int a[1005];
 8 int b[1005];
 9 int main()
10 {
11     while(cin>>n>>k){
12         memset(b,0,sizeof(b));
13         for(int i=1;i<=n;i++){
14             a[i]=i;
15         }
16         t=1,st=1,flag=1;
17         while(flag){
18             if(t%k==0||t%10==k){
19                 b[st]=1;
20             }
21             //cout<<"stu:"<<st<<" t:"<<t<<" b[i]="<<b[st]<<endl;
22             sum=0;
23             for(int i=1;i<=n;i++){
24                 if(b[i]==0){
25                     sum++;
26                     //cout<<i<<" ";
27                 }
28             }
29             //cout<<endl;
30             if(sum==1){
31                 for(int i=1;i<=n;i++){
32                     if(b[i]==0){
33                         cout<<i<<endl;
34                         flag=0;
35                         break;
36                     }
37                 }
38             }
39             st++;
40             while(1){
41                 if(b[st]==0||st>n) break;
42                 st++;
43             }
44             if(st>n){
45                 for(int i=1;i<=n;i++){
46                     if(b[i]==0){
47                         st=i;
48                         break;
49                     }
50                 }
51             }
52             t++;
53         }
54     }
55     return 0;
56 }

原文地址:https://www.cnblogs.com/shixinzei/p/10799349.html

时间: 2024-07-31 15:52:06

CCF CSP 201712-2 游戏的相关文章

记第十七次CCF CSP认证

记第十七次CCF CSP认证 第一二题很简单,就是简单的模拟就可以了,后面的第三四题用了近一个小时才看懂,但是感觉好复杂,不好写,能力不行,写不出来.第五题,就想到了暴力,其他就不会了,但是我没有去写,因为感觉这个复杂度就算写了也过不了.最后检查了几遍第一二题的代码,范围我开的都比题目要求的大一个数量级.最后就过了这两个题. 下次12月份继续! 原文地址:https://www.cnblogs.com/alking1001/p/11536021.html

CCF - 201512-2 - 消除类游戏

问题描述 试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除.当有多处可以被消除时,这些地方的棋子将同时被消除. 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘. 请注意:一个棋子可能在某一行

【CCF】消除类游戏

问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除.当有多处可以被消除时,这些地方的棋子将同时被消除. 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘. 请注意:一个棋子可能在某一行和某一列同时被消除. 输入格式 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数. 接下来n行,每行m个

CCF CSP历年一二题代码汇总

实话说如果不是为了骗访问量,才不会写12题的qwq 201803-1 跳一跳 第一题向来是送分题...但是注意读题... 模拟题按题意走是坠稳的 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define LL long long 6 #define debug(x) cout << "[" <&l

CCF CSP个人题解汇总

趁着这波考CCF热来骗一波访问量 祝自己免修算法RP++ 区域赛RP++ 1.2题汇总在这:https://www.cnblogs.com/QAQorz/p/9650890.html 201803-4 棋局评估(对抗搜索):https://www.cnblogs.com/QAQorz/p/9650828.html 201712-4 行车路线(最短路):https://www.cnblogs.com/QAQorz/p/9588268.html 原文地址:https://www.cnblogs.co

CCF CSP 201803-1 跳一跳

题目链接:http://118.190.20.162/view.page?gpid=T73 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束. 如果跳到了方块上,但没有跳到方块的中心则获得1分:跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8...). 现在给出一个人跳一跳的

【算法题】CCF CSP第二题练习(更新中)

/* 试题编号:201912-2 试题名称:回收站选址 题目描述: 通过无人机航拍我们已经知晓了n处尚待清理的垃圾位置,其中第i(1<=i<=n)处的坐标为(xi,yi),保证所有的坐标均为整数. 我们希望在垃圾集中的地方建立些回收站.具体来说,对于一个位置(x,y)是否适合建立回收站,我们主要考虑以下几点: ·(x,y)必须是整数坐标,且该处存在垃圾: ·上下左右四个邻居位置,即(x,y+1).(x,y-1).(x+1,y)和(x-1,y)处,必须全部存在垃圾: ·进一步地,我们会对满足上述

ccf csp题解201312-1

试题编号: 201312-1 试题名称: 出现次数最多的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输

第16次CCF CSP认证-第5题-317 号子任务(subtask317)-图论最短路径

[题目背景]“你在平原上走着走着,突然迎面遇到一堵墙,这墙向上无限高,向下无限深,向左无限远,向右无限远,这墙是什么?”——<流浪地球>原著我们带着地球去流浪了,为了处理流浪过程中可能会发生的危机,联合政府找到你,希望你能协助完成 317 号子任务:制定应急预案.[题目描述]地球的表面有 n 个据点,这些据点之间存在 m 条双向道路.这些据点中,有的是建立在行星发动机之下,受到行星发动机的保护(行星发动机据点),而其他据点则没有行星发动机的保护(普通据点,比如燃料采集据点/科研据点等).当发生