模拟进制
#include <bits/stdc++.h>
using namespace std;
#define ll unsigned long long//宏定义
int ar[105];//二进制位数
int main() {
ll n, m;
while (cin >> n >> m) {//c++的多组输入,没卡
int cnt = 1;
ll ans = 0;
fill(ar + 1, ar + 65, 0);//初始化
while (n > 0) {//转二进制
ar[cnt++] = n % 2;
n /= 2;
}
cnt = 0;
for (int i = m; i <= 64; i++) {//一边完成交换,一边把二进制转换成十进制
ans += (pow(2, cnt) * ar[i]);
cnt++;
}
for (int i = 1; i < m; i++) {//还是在交换转十进制
ans += (ar[i] * pow(2, cnt));
cnt++;
}
cout << ans << "\n";
}
return 0;
}