題目鏈接:Mining a
先假設式子爲:1/x+1/y=1/n
所以:x=b,y=a^b
我們可以化簡得到:y=n*x/(x-n) , 令 z=x-n可得:y=n+n*n/z,所以枚舉z即可。
然後就可以解除所有的x,y取最大值即可。
AC代碼:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,res;
inline void solve(){
res=0; cin>>n;
for(int i=1;i<=n;i++) if(n*n%i==0){
int y=n+n*n/i;
res=max(res,y^(i+n));
}
cout<<res<<endl;
}
signed main(){
int T; cin>>T; while(T--) solve();
return 0;
}