n个人围成一个圆圈,编号为1~n,从第一号开始报数,报到m的倍数的人离开, 一直数下去,直到最后只有一个人, 求此人编号
public class Josephus {
public int josephus(int n, int m) {
int s = 0;
for (int i = 2; i <= n; i++) {
//每轮出局的人的序号
s = (s + m) % i;
}
//编号1开始
return s + 1;
}
public static void main(String[] args) {
System.out.println(new Josephus().josephus(15, 3));
}
}
网友评论