P14664 [KenOI 2025] 异或题 解题报告
AuCodingFrogHoward · · 题解
算法
考虑按位贪心喵。
弱化
先考虑没有限制咋做喵。显然拆分为二进制喵,于是有:
设
则
推广
我们考虑限制喵,则需将一些同为
码
有点长喵。
#include<bits/stdc++.h>
#define int long long
#define y1 qht_yjx
#define hash ZhaoAk
#define maxn 200005
#define maxsqt 230
#define endl "\n"
#define nullptr 0
#define I ios::sync_with_stdio (nullptr);
#define AK cin.tie (nullptr);
#define CSP cout.tie (nullptr);
using namespace std;
int stk[100] ,top;
void work ()
{
int n;
cin >> n;
int ans = 0 ,res = 0 ,ones = 0;
top = 0;
while (n)
{
stk[top ++] = n & 1;
n >>= 1;
}
top --;
for (int i = top ;i >= 0 ;i --)
{
if (stk[i] == 1)
{
ones ++;
ans += (1 << i);
}
else
if (ones >= 2)
ans += (1 << (i + 1));
}
cout << ans << endl;
}
signed main()
{
I AK CSP
int T;
cin >> T;
while (T --) work ();
return !!!!! ("ShZhao" && "SHzhao");
}
//Code by Lyyq.
//wage.