序列当中最大异或和其实与序列顺序无关(当时因为没想到序列顺序与最大和有什么关系就没有坚定答案错失良机)一个最大方案就是第一个数是1<<(log2(n)+1)-1第二个数与自身异或为零也就是答案是n*1<<(log2(n))+1)最后强调(一定要用long long 一定要用long long 一定要用long long重要的事说三遍另外对自己要有信心哦,要相信你仔细思考之后的思路,给的数据不一定要用上的)
#include<iostream>
#include <math.h>
using namespace std;
int main()
{
long long n;
cin>>n;
int k=log2(n);
k++;
cout<<n*(long long)((1<<k)-1);
return 0;
}