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 ...
随机推荐
- 爬虫必备—scrapy-redis(分布式爬虫)
转载自:http://www.cnblogs.com/wupeiqi/articles/6912807.html scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单 ...
- OpenGL学习--03--矩阵
Model--View--Projection 1.tutorial03.cpp // Include standard headers #include <stdio.h> #inclu ...
- AngularJs 第一个自定义指令编写
公司在做一个OA系统, 包括移动端(从微信企业号进入OA系统),电脑端. 电脑端还是用的传统的easyui做界面,asp.net mvc作为服务端.这个技术已经很成熟了配合权限框架很快就能开发出来.但 ...
- linux中文字体
◆ 背景说明 报表,在windows下,展现.导出都正常,在linux下,字体变大了.比如,单元格的大小设计好后,里面的字当好能一行显示完,将报表放到linux下后,字变大了,一行显示不完了,变 ...
- Java简单的数据库连接
package test.postgre; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...
- mysql-sql-standard
https://github.com/zhishutech/mysql-sql-standard
- 转:.NET中的三种Timer的区别和用法(转)
//1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer // 2.提供以指定的 ...
- ELT探索之旅2 kettle配置
java环境变量配置: path增加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 双击spoon.bat即可
- unwrapped与wrapped变量取值的问题
unwrapped与wrapped变量取值的问题 当我们在定义一个tableView时,是可以使用3种定义方式的,第一种就是定义成optional(AnyObject?)形式,第二种为non-opti ...
- Linux 隐藏系统信息
Linux查看系统信息 [更多参考]https://www.cnblogs.com/ftl1012/p/uname.html Linux隐藏系统信息 查看: cat /etc/issue.net ...