n个人,数到k的人踢出,求最后剩下的是哪个。
int last = 1;
//只有一个人时,最后一个人必然是1
for (int i = 2; i <= n; i++) {
//当圈内为i个人时,结果是圈内为i-1个人的结果加K后对i求余
last = ((last + k - 1) % i) + 1;
//为避免出现结果为0,让i-1的结果先减1,求余后再加1
}
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int last = 1;
for (int i = 2; i <= n; i++) {
last = ((last+2)%i) + 1;
}
System.out.print(last);
}
}
测试结果