2022.6.13 CF两题
作者:互联网
摘要:两道涉及位运算的800分题,不会做
- A. Cirno's Perfect Bitmasks Classroom
链接A. Cirno's Perfect Bitmasks Classroom
题意:对于一个给定的数 \(n\),找到使 x AND y > 0 且 x XOR y > 0 的最小正整数 y,其中n < 2^30
解析:即要满足 x 和 y 的最低位 1 相同,且存在不同的一位,考虑到 2^30 约等于 1e9,可以暴力。先用lowbit()
找到最低位 1 再枚举。代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
using i64 = long long;
int lowbit(int x) {
return x & (-x);
}
void solve() {
int x;
cin >> x;
int y = lowbit(x);
while (!(x & y && x ^ y)) {
y++;
}
cout << y << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
标签:Perfect,13,int,lowbit,Cirno,long,while,两题,2022.6 来源: https://www.cnblogs.com/isrol/p/16373049.html