示例都过,答案0分
查看原帖
示例都过,答案0分
742226
chen3416707964楼主2025/1/3 17:06

暴力枚举后想到可以通过转二进制看1的个数来做,但这种方法在提交后是0分,示例都能过,因为本题测试点不能下载,不清楚错在哪里

#include<bits/stdc++.h>
using namespace std;

int n, t[32]; // 定义数组存储对应位权出现的次数

int main(){
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;
        for (int k = 30; k >= 0 && x > 0; k--) {
            int m = 1 << k;
            if (x >= m) {
                x -= m;
                t[k]++;  // k 位计数 +1
            }
        }
    }

    // 遍历 t 数组,查找大于等于 2 的位
    for (int i = 30; i >= 0; i--) {
        if (t[i] >= 2) {
            int m = 1 << i;  // 计算该位对应的值
            cout << m;
            return 0;
        }
    }

    // 如果没有符合条件的位,输出 0
    cout << 0;
    return 0;
}
2025/1/3 17:06
加载中...