C.meaningless operation
题意
思路
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int q;
ll a;
ll p[30];
ll print(ll x)
{
for(ll i=3;i*i<=x;i++)
{
if(x%i==0)return x/i;
}
return 1;
}
int main()
{
cin>>q;
p[0]=1;
for(int i=1;i<=26;i++)p[i]=p[i-1]*2;
while(q--)
{
cin>>a;
int i;
for(i=26;i>=0;i--)if((1<<i)&a)break;//找到小于等于a的就停下来
if(a&(a+1))cout<<p[i+1]-1<<endl;//a不都为1
else cout<<print(a)<<endl;//a都为1
}
return 0;
}