for(int i=1;i<=n;i++){ cin>>a[i]; se.insert(a[i]); } int s1=0,s2=0x7fffffff; for(int i=1;i<=n;i++){ s1|=a[i];//找出二进制位有1的位置 s2&=a[i];//找出二进制位都为1的位置 } s2^=s1;//找出二进制位有1但不都为1的位置 ll ans; int t=se.size()-1; for(int i=0;i<=30;i++){ int c=1<<i; if(s2&c){//找出s1二进制位的为1的最小位置 ans=1ll*c*t; break; } }