现在 Xttttr 和他的 npy 玩起了报数游戏,但是他们非常喜欢 22 这个数字,于是制定了如下规则: 如果一个数 aa 满足 \operatorname{popcount}(a) \geq 3popcount(a)≥3,那么这个数字是非法的,对方需要回答 No,Commander。 否则,这个数是合法的,对方需要回答下一个合法的数。 坐在旁边的你当然不知道游戏的乐趣,你只想知道某次报数之后对方应该回答什么。 输入格式 第一行一个正整数 TT,表示询问的次数。 后面 TT 行,每行一个正整数 aa,表示这次询问中某一方报出的数字。 输出格式 TT 行,每行一个正整数或字符串,表示本次询问中对方所应该回答的。对于 100\%100% 的数据,1\leq T \leq 10^51≤T≤10 5 ,0\leq a\leq2^{60}0≤a≤2 60 。c++代码实现
时间: 2024-04-08 11:33:46 浏览: 102
以下一个用C++实现的示例代码:
```cpp#include <iostream>
#include <bitset>
int popcount(long long num) {
std::bitset<64> bit(num);
return bit.count();
}
long long nextValidNumber(long long num) {
while (popcount(num) >= 3) {
num++;
}
return num;
}
int main() {
int T;
std::cin >> T;
for (int i = 0; i < T; i++) {
long long num;
std::cin >> num;
if (popcount(num) >= 3) {
std::cout << "No,Commander" << std::endl;
} else {
long long nextNum = nextValidNumber(num + 1);
std::cout << nextNum << std::endl;
}
}
return 0;
}
```
这段代码会根据输入的次数和数字,判断每次报数后对方应该回答的内容。如果报出的数字满足非法条件(popcount大于等于3),则输出"No,Commander";否则,输出下一个合法的数。注意,代码中使用了bitset来计算一个数的二进制表示中1的个数(即popcount)。
阅读全文