《B3930 [GESP202312 五级] 烹饪问题》

《B3930 [GESP202312 五级] 烹饪问题》 题目背景对应的选择、判断题https://ti.luogu.com.cn/problemset/1137题目描述有 N 种食材编号从 1 至 N其中第 i 种食材的美味度为 ai​。不同食材之间的组合可能产生奇妙的化学反应。具体来说如果两种食材的美味度分别为 x 和 y 那么它们的契合度为 x and y。其中and 运算为按位与运算需要先将两个运算数转换为二进制然后在高位补足 再逐位进行与运算。例如12 与 6 的二进制表示分别为 1100 和 0110 将它们逐位进行与运算得到 0100 转换为十进制得到 4因此 12 and 64。在 C 或 Python 中可以直接使用运算符表示与运算。现在请你找到契合度最高的两种食材并输出它们的契合度。输入格式第一行一个整数 N表示食材的种数。接下来一行 N 个用空格隔开的整数依次为 a1​,⋯,aN​表示各种食材的美味度。输出格式输出一行一个整数表示最高的契合度。输入输出样例输入 #1复制3 1 2 3输出 #1复制2输入 #2复制5 5 6 2 10 13输出 #2复制8说明/提示样例解释 1可以编号为 2,3 的食材之间的契合度为 2 and 32是所有食材两两之间最高的契合度。样例解释 2可以编号为 4,5 的食材之间的契合度为 10 and 138是所有食材两两之间最高的契合度。数据范围对于 40% 的测试点保证 N≤1,000对于所有测试点保证 N≤1060≤ai​≤2,147,483,647。代码实现#include iostream #include vector using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin n; vectorint a(n); for (int i 0; i n; i) cin a[i]; int ans 0; for (int bit 30; bit 0; --bit) { int mask ans | (1 bit); vectorint buf; for (int x : a) { if ((x mask) mask) { buf.push_back(x); if (buf.size() 2) break; } } if (buf.size() 2) ans mask; } cout ans \n; return 0; }