思路:
两个数的异或值最小,当且仅当它们的二进制表示尽可能相似。对于互质的数,最小的非零异或值通常出现在 a 和 b 非常接近的时候。 一个经典的构造是,取 a=2 t , b=2 t +1 ,其中 t 是一个合适的整数。这两个数一定是互质的,因为连续的两个整数互质。
代码:
#include<bits/stdc++.h> #define int long long using namespace std; signed main() { cin.tie(0),cout.tie(0),ios::sync_with_stdio(0); int t; cin >> t; while(t--){ int n; cin >> n; int t=32-__builtin_clz(n)-__builtin_ctz(n); int x=(n<<t); int y=x+n; cout << x << ' ' << y << endl; } return 0; }

京公网安备 11010502036488号