题解 | 约瑟夫环
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt(), k=in.nextInt(), m=in.nextInt();
int x=0;//当只有一个人时,有且只有0号胜出
//由于约瑟夫环问题没有通项公式只有递归公式
//for循环相当于递归公式由低到高一一往后推导
for(int i=2/*从有两个人开始*/;i<=n/*到最后一个人被淘汰截止*/;i++){
x=(x+m/*m表示在x的基础下数m个数*/)%i;
//对i取余表示在有i人参与的情况下最后一个被淘汰的人的位置
}
x=(x+k)%n;//将初始位置加到最后一个人的位置上并对总人数n取余防止超出范围
System.out.print(x);
}
}
海康威视公司福利 1182人发布
查看16道真题和解析