Files
ClassFeedback/C++代码/GESP考级/三级/202609公共二进制位.cpp

54 lines
760 B
C++

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int n, num;
int s[100];
string str = "01";
// 10进制转换成 2进制
string f(int n){
if(n == 0) return "0";
string re = "";
while(n > 0){
int g = n % 2;
re = str[g] + re;
n /= 2;
}
return re;
}
int main(){
cin >> n;
int maxx = 0;
for(int i = 1; i <= n; i++){
cin >> num;
string curr = f(num);
int len = curr.size();
int idx = 0;
for(int j = len - 1; j >= 0; j--){
char c = curr[j];
if(c == '1'){
s[idx]++;
}
idx++;
}
maxx = max(maxx, idx); // 统计最长字符串
// cout << "当前这个数二进制是" << curr << " " << idx << endl;
}
int cnt = 0;
for(int i = 0; i < maxx; i++){
if(s[i] == n) {
cnt++;
}
}
cout << cnt;
return 0;
}