public class YSF {
/**
* 约瑟夫环
* @param m数到m退出
* @param n共有n个人
* @param k从第k个开始数
* @return
*/
private static int ysf(int m, int n, int k) {
int result = 0;
for (int i = 2; i <= n; i++) {
result = (result + m) % i;
}
return result + k % n;
}
public static void main(String[] args) {
System.out.println(ysf(3, 500, 1));
}
}
原题是:2.有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小朋友开始报数,数到三的退出,问最后剩下的是编号为几!
望能详解,望添上注释!
|