题目
输入
输出
思路
因为n为x,y的最大公约数,可以设x=k1n,y=k2n;
x和y的异或等于n倍的k1和k2的异或,要使得x和y的异或最小,即k1和k2的异或要为1,显然可以取到。
所以x和y的异或为n;
于是就可以通过n构造x,y;
将n<<31得到x;
将n<<31+n得到y;
完整代码
```#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
long long n;
cin>>n;
cout<<(n<<31)<<" "<<( n <<31 | n)<<endl;
}
return 0;
}

京公网安备 11010502036488号