题解(很详细)
2025-08-11 22:41:04
发布于:浙江
11阅读
0回复
0点赞
注意到
题意:两个数 进行异或得到的最大值 求这个值(好像不是(((
很自然的想到:对于一个数 存在 (有 k 个 0 )这个二进制
异或后一定存在 这些值 (cao我~显示不出来)
可以通过 异或 得到
于是:
如果 为
否则为 (向上取整不会打)
用代码写就是
ans = pow(2.ceil(log2(n)));
注意 要开 long long (不开 long long 见祖宗(((
代码
# include <bits/stdc++.h>
typedef unsigned long long ull;
#define endl '\n'
using namespace std ;
int main ( )
{
int t;
cin>>t;
while(t--){
ull n;
cin>>n;
ull tmp = (ull)pow(2,ceil(log2(n)));
cout<<tmp<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个