P10031 Xor with Gcd 题解
T_TLucas_Yin · · 题解
题目大意:给定
看到数据范围,很容易发现这是个典型的结论题。所以直接开始找规律。
对于求最大公约数,有一种方法叫做更相减损术。其中用到了这样一条规律:
改一下字母就可得
我们又知道,异或和运算满足
也就是说,对于所有
接下来看整个式子。若
若
#include<bits/stdc++.h>
using namespace std;
long long t,n;
int main(){
cin>>t;
while(t--){
cin>>n;
if(n&1) printf("%lld\n",n);// n&1就是n%2==1
else printf("%lld\n",(n/2)^n);
}
return 0;
}