以0~9为例
我们发现删除的第一个数是2的次方-1:
{ 0 = 2 1 − 1 − 1 1 = 2 2 − 1 − 1 3 = 2 3 − 1 − 1 7 = 2 4 − 1 − 1 \left\{ \begin{matrix} 0 = 2^{1-1}-1\\ 1 = 2^{2-1}-1\\ 3 = 2^{3-1}-1\\ 7 = 2^{4-1}-1 \end{matrix} \right. ⎩ ⎨ ⎧0=21−1−11=22−1−13=23−1−17=24−1−1
所以只要找到最后一个删除的数就好了
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int ret = 4;
while(ret - 1 <= n) ret *= 2;
System.out.println(ret / 2 - 1);
}
}
}