问题描述
现有n个同学站成一圈,顺时针编号1至n。从1号同学开始顺时针1/2报数,报到1的同学留在原地,报到2的同学退出圆圈,直到只剩一名同学为止。问最后剩下的同学编号。
输入格式
仅一行,一个正整数n。
输出格式
仅一行,一个正整数。
样例输入
400
样例输出
289
思路:刚看以为是约瑟夫环问题,但是好像给想复杂了,然后借鉴了大哥的解法~~
详情:https://blog.csdn.net/a1439775520/article/details/105853821/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int people = 0;
for (int i = 1; i <= n; i++) {
people = (people + 2) % i; // 倒着想
}
System.out.println(people + 1); // 直到剩最后一名,所以要+1
}
}