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号小朋友获胜。 给定n和k,请问最后获胜的小朋友编号为多少?
输入格式
输入一行,包括两个整数n和k,意义如题目所述。
输出格式
输出一行,包含一个整数,表示获胜的小朋友编号。
样例输入
5 2
样例输出
3
样例输入
7 3
样例输出
4
数据规模和约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。
思路:使用队列实现。
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner; public class Main_Game {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();// 小朋友个数
int num = sc.nextInt();// 需要数的数
int currnum = 1;
Queue<Integer> queue = new ArrayDeque<Integer>();// 小朋友组成的队列
for (int i = 1; i <= count; i++) {
queue.add(i);
}
while (queue.size() > 1) {
int top = queue.element();//队首元素
queue.remove();//删除队首元素
if(currnum % num !=0 && currnum %10 != num){
//如果不是num的倍数并且不包含num
queue.add(top);//将元素加入队尾
}
currnum ++;
}
System.out.println(queue.element());
}
}
链表实现:
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner; public class CountGame {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();// 小朋友个数
int num = sc.nextInt();// 需要数的数
int currnum = 0;
int currid = 0;
List<Person> pers = new LinkedList<Person>();
for(int i = 0; i < count; i++){
Person pes = new Person(i+1);
pers.add(pes);
}
while (pers.size() > 1) {
currnum ++;
if (currnum % num != 0 && currnum%10!=num) {
// 数到不是num的倍数也不包含num的数
pers.get(currid).setNumber(currnum);
}else{
pers.remove(currid);
if(currid >= pers.size()){
currid = 0;
}
continue;
}
if(currid < pers.size()-1){
currid++;
}else{
currid = 0;
}
}
System.out.println(pers.get(0).getId());
}
}
class Person {
private int id;
private int number; public Person(){} public Person(int id){
this.id = id;
} public Person(int id,int number){
this.id = id;
this.number = number;
} public int getId() {
return this.id;
} public void setId(int id) {
this.id = id;
} public int getNumber() {
return number;
} public void setNumber(int number) {
this.number = number;
} }
CCF认证201712-2游戏的更多相关文章
- CCF认证历年试题
CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201709-1 打酱油(100分) CCF201703-1 分蛋糕(100分) CCF2 ...
- 小明种苹果(续)第十七次CCF认证
小明种苹果(续)第十七次CCF认证 题目 原题链接 ](http://118.190.20.162/view.page?gpid=T93) 很高心,在现在CCF CSP可以下载自己当时的答卷了,也就是 ...
- CCF认证(1)
#include <iostream> #include <windows.h> using namespace std; typedef struct letter{ int ...
- CCF 认证4
题意:求强联通分量 Tarjan算法 #include<iostream> #include<stdio.h> #include<stdlib.h> #includ ...
- CCF 认证
题意:字符串替换 string+map的应用 #include<iostream> #include<stdio.h> #include<stdlib.h> #in ...
- CCF认证考试——折点计数
描述:简单题 #include<iostream> using namespace std; int main() { ], n, count = ; cin >> n; ; ...
- CCF认证之——相反数
这道题目非常简单! #include<iostream> using namespace std; int main() { ],n,count=; cin >> n; ; i ...
- ccf认证 201709-4 通信网络 java实现
试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内 ...
- ccf认证模拟题之三---最大的矩形
问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3 ...
随机推荐
- 移动端点击输入框,弹出键盘,底部被顶起问题(vue)
这个问题相信做移动端开发的童鞋会有深刻体会,以前用jq开发时就很头疼这个问题,每次底部footer部分需要用position:fixed,如果页面内容不是很长,没有超出屏幕范围,那就还好,没有问题:一 ...
- Global Average Pooling Layers for Object Localization
For image classification tasks, a common choice for convolutional neural network (CNN) architecture ...
- java实现Kafka的消费者示例
使用java实现Kafka的消费者 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
- JS JSON序列化 Ajax form表单
# JS序列化 a = {"k1":"v1"} #序列化为字符串 类似python json.dumps(a) b = JSON.stringify(a) &q ...
- Linux服务器安装JDK运行环境教程
小Alan过些天可能就要去上海出差了,出差干啥?当然是部署项目上线咯!所以呢必须自己学会在Linux服务上面安装部署项目运行环境的啦!今天先跟大家聊聊最基本的jdk运行环境部署安装,后续再跟大家分享一 ...
- 短时傅里叶变换(Short Time Fourier Transform)原理及 Python 实现
原理 短时傅里叶变换(Short Time Fourier Transform, STFT) 是一个用于语音信号处理的通用工具.它定义了一个非常有用的时间和频率分布类, 其指定了任意信号随时间和频率变 ...
- 3.CSS使用基础(2)
目录 一.CSS 链接 二.CSS 列表样式(ul) 三.CSS Table(表格) 四.盒子模型 五.CSS Border(边框) 六.CSS 轮廓(outline)属性 七.CSS Margin( ...
- asp.net 對象圖解
- Error loading XML document: dwz.frag.xml 处理方式
问题:直接用IE打开index.html弹出一个对话框:Error loading XML document: dwz.frag.xml 方案一(已经验证): 转自:http://blog.csdn. ...
- EBS中比较复杂的trace方法
FND LOG Messages-------------------------a) Using the System Administrator Responsibility, navigate ...