题目大意
给定一个数,求左移k位后的十进制数
#include <algorithm>
#include <cstring>
#include <iostream>
#define dbg(x) cout << #x << '=' << x << endl
#define FA ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e6 + 10, M = 1e3 + 10, mod = 1e9 + 7;
const double eps = 1e-8;
typedef long long LL;
typedef pair<int, int> PII;
int b[50], a[50];
void solve() {
int n, m;
cin >> n >> m;
while (m--) {
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
LL num, k;
cin >> num >> k;
k %= n;
int idx = 0;
while (num) { //取二进制
a[idx++] = num & 1;
num >>= 1;
}
// for (int i = idx - 1; i >= 0; i--) {
// cout << a[i];
// }
for (int i = 0; i < k; i++) {//移位
b[i] = a[n - k + i];
}
for (int i = k; i < n; i++) {
b[i] = a[i - k];
}
LL ans = 0, now = 1;
for (int i = 0; i < n; i++) {//还原十进制
if (b[i]) ans += now;
now *= 2;
}
cout << ans << endl;
}
}
int main() {
int T = 1;
// FA;
while (T--) {
solve();
}
return 0;
}