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 ...
随机推荐
- CRM 安装过程 AD+SQL+CRM
AD: 通过服务器管理器添加域服务,配置域服务器域名为crm5.lab. 注意:使用高级模式安装. 说明:服务器是windows server 2003 那么就选windows server 2003 ...
- Spring Boot—05页面跳转
package com.smartmap.sample.ch1.controller.view; import org.springframework.stereotype.Controller; i ...
- screen 状态为Attached 连不上
用 screen -ls, 显式当前状态为Attached, 但当前没有用户登陆些会话.screen此时正常状态应该为(Detached) 此时用screen -r ,怎么也登不上. 最后找到解决方 ...
- [转]Linux内核最新的连续内存分配器(CMA)——避免预留大块内存
http://blog.csdn.net/21cnbao/article/details/7309757 在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等 ...
- 云卡门禁苹果SDK_BLEDOOR_SDK_IOS_2016_12_15
// // BLElib.h // BLElib // // Created by szbosk on 16/8/16. // Copyright © 2016年 szbosk. All rights ...
- oracle 用户对象权限
drop user test cascade;create user test identified by test;grant create session to test;grant create ...
- use ROW_NUMBER() for pagination in Oracle and SQLServer
------------------------------------------------------------------------Oracle---------------------- ...
- 微软MVP社区秋日巡讲 —— 北京Windows Phone应用开发训练营
微软MVP社区秋日巡讲 —— 北京Windows Phone应用开发训练营 活动说明和报名地址www.aka.ms\mvpbeijing 欢迎北京的朋友参与在今年10月举办的Windows Phon ...
- jquery中的ajax方法
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...
- 将虚拟网络连接到 ExpressRoute 线路
本文通过使用 Resource Manager 部署模型和 Azure 门户,帮助将虚拟网络 (VNets) 链接到 Azure ExpressRoute 线路. 虚拟网络可以在同一个订阅中,也可以属 ...