题目描述如上图
题解如下:
因为|x −y| ≤ x ⊕ y,n ≤ |x −y| ≤ x ⊕y, 所以 x⊕y 的最小值是n。
由x,y的范围入手其实可以发现一点猫腻,我的x和y后面其实可以加许多个0,举个例子:
如果我的n为101011,我的x可以为101011000000(最多可以31个0),y就为101011101011,这样x⊕y的值为n,而此时的y的值其实就是x取2^k+1LL,这样既满足互质也满足异或为n,这是个很巧妙的方法,是看了雨巨姐姐的直播才明白的。这是一道思维构造题,AC码附下:
void solve() {
int ky = 1LL << 31;
int kx = ky + 1LL;
int n;
cin >> n;
cout << n*kx << ' ' << n*ky << endl;
}
signed main() {
//vector<vector<int>>a(n,vector<int>(m)); 二维构造
//cout << fixed << setprecision(10); 固定小数输出
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
cin >> T;
while (T--) solve();
return 0;
}

京公网安备 11010502036488号