今天遇到这样一个一题,杀人游戏
一个国王拉来了一百位死囚犯,让他们围成一个圈,然后选择一个开始报数,报到3 (或者其他数字)
就杀掉,然后又重一开始,这样一直循环的杀 直到最后一个无罪释放,
问 哪一个幸运儿 一开应该站在几号 位置。
public class test {
public static void main(String[] args) {
System.out.println(getLucklyNum(8,3));
}
public static int getLucklyNum(int num,int x) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= num; i++) { //分别添加到list集合中
list.add(i);
}
int count = 1;
for (int i = 0; list.size() != 1; i++) { //只留一个,所以 size != 1 就一直循环
if (i == list.size()) { //当i到最后的时候,归零。
i = 0;
}
if (count % x == 0) { // 判断倍数
list.remove(i--); // 注意: 当删除的时候,删除点整体向前移一位,i 就要 --。
}
count++;
}
return list.get(0); //返回仅有的一个数
}
}