题目 alt 输入 alt 输出 alt

思路

因为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;
}