0
点赞
收藏
分享

微信扫一扫

【古代文明】

一ke大白菜 2022-03-30 阅读 123
c++

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// 1;
// 5 30;
// 1 2 3 4 5
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define fors(i, a, b) for(int i = a; i < b; i ++ )

using namespace std;

const int N = 110;

vector<int> q[N];
int n, m;

void work()
{
    cin >> n >> m;
        
    for(int i = 0; i < n; i ++ )
    {
        int x;
        cin >> x;
        
        // 注意每次记得清空
        q[i].clear();
        // 将每个数转化成二进制
        for(int k = m - 1; k >= 0; k -- ){ 
            q[i].push_back(x >> k & 1);
        }
            
    }  
    int cnt1 = 0, cnt0 = 0;
    vector<int> res;
    fors(i, 0, m) // row
    {
        cnt0 = 0, cnt1 = 0;
        fors(j, 0, n) // col
        {
            if(q[j][i] == 0) cnt0 ++ ;
            else cnt1 ++ ;
        }
        if(cnt0 >= cnt1) res.push_back(0);
        else res.push_back(1);
    }
    
    int ans = 0;
    for(int i = 0; i < res.size(); i ++ ) ans = ans*2 + res[i]; 
    // 秦九韶算法, 将 b 进制转化成10进制, 有兴趣可以搜一下
    
    cout << ans << endl;
}

int main()
{
    int T;
    cin >> T;
    
    while(T -- ) work();

}
举报

相关推荐

0 条评论