题目 ## 黄金矿工
Description
在上个世纪前,安科的后山曾经是一个黄金矿山(现在无力吐槽)。在山上住着是n个矿工,他们辛苦一年终于到了发年终奖励的时候了,公司的CEO vyoung先生决定将一块黄金发给最有价值矿工,不过这就很让他头痛了,这些矿工每个人都是非常卖力的工作的。无奈,vyoung决定让上帝来决定。他让n课矿工围坐在一起成一个圈,第一次淘汰第m个,以后每数k个数淘汰一个,最后一个留下的将获得这块金块。
Input
输入包含多组数据。每组数据包含三个整数 n,k,m(<=2n<=10000,1<=k<=10000,1<=m<=n)
输入结束标志为n=k=m=0
Output
对于每组数据输出最后被留下来的人
Sample Input
8 5 3
100 9999 98
10000 10000 10000
0 0 0
Sample Output
1
93
2019
这里我用链表做的,每次访问到尾节点时,进行下一个节点访问时,模上链表的长度就会回到链表的头节点。
package cn.Javaweb.cc;
import java.util.LinkedList;
import java.util.Scanner;
/**
*
* @author Huai
* @creation 6:22:03 PMApr 8, 2018
*
*/
public class R {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int k = sc.nextInt();
int m = sc.nextInt();
if (n == 0)
break;
LinkedList<Integer> list = new LinkedList<>();
for (int i = 0; i < n; i++) {
list.add(i + 1);
}
int length = list.size();
while (length > 1) {
m = (m - 1) % length;
list.remove(m);
length = list.size();
m += k;
}
for (Integer i : list) {
System.out.println(i);
}
}
sc.close();
}
}