文章
211
粉丝
0
获赞
963
访问
32.5k
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll binToDec(const string &s) {
if (s.empty())
return 0;
ll res = 0;
for (char c : s)
res = res * 2 + (c - '0');
return res;
}
int main(){
int n;
while(cin >> n){
ll m = (1 << n);
vector<ll> books(m-1);
string s;
for(ll i=0;i<m-1;i++){
cin >> s;
books[i] = binToDec(s);
}
sort(books.begin(),books.end());
// 二分查找
ll left = 0, right = m-2, ans = m-1;
while (left <= right) {
ll mid = left + (right - left) / 2;
if (books[mid] != mid) { // 缺失在左边或当前位置
ans = mid; // 缺失的数字是 mid
right = mid - 1; // 继续向左查找
} else {
left = mid + 1; // 前半部分完整,向右查找
}
}
cout << ans << endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发