答案
2026-09-21 18:26:13
发布于:浙江
2阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
// __int128输出函数
void print(__int128 x) {
if (x == 0) {
cout << "0\n";
return;
}
string s;
while(x > 0) {
s += (char)('0' + (x % 10));
x /= 10;
}
reverse(s.begin(), s.end());
cout << s << "\n";
}
int main() {
int n;
cin >> n;
vector<ll> a(n);
for(int i = 0; i < n; i++) {
cin >> a[i];
}
__int128 ans = 0;
// 枚举所有子集 mask
for(int mask = 1; mask < (1 << n); mask++) {
// 禁止选全部元素
if(mask == ((1 << n) - 1)) continue;
ll sum = 0;
ll xor_val = 0;
for(int i = 0; i < n; i++) {
if(mask & (1 << i)) {
sum += a[i];
xor_val ^= a[i];
}
}
__int128 val = (__int128)xor_val * sum;
if(val > ans) ans = val;
}
print(ans);
return 0;
}
题目正确答案
(题目样例错了无法AC)
这里空空如也








有帮助,赞一个