思路
这种题 主要还是模拟
可以让 n q 循环减去 (n+1)/2 求得所在q的轮数
令 为 第 轮 的 人偶数量 , 为 人偶总数
第 轮 离开 的 人偶
第 轮 的第一个人偶是
每轮的人偶号数成等差数列
第 轮 的第 个人偶是
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n,q,i=1,j;
cin >> n >> q ;
while (1) {
j = (n + 1)/2 ;
if (q <= j) break ;
n -= j ;
q -= j ;
i++ ;
}
cout << (1ll << (i - 1)) - 1 + (q-1)*(1ll << i) ;
return 0;
}
/**************************************************************
Problem: 2289
User: 21XXXXXXXX
Language: C++
Result: 正确
Time:0 ms
Memory:2024 kb
****************************************************************/