关注
#include<bits/stdc++.h>
using namespace std;
typedef vector<int>::iterator vii;
int father(int k, int n)
{
if (n > k) abort();
int low = 1, high = k;
int mid, last = (low + high) / 2;
while (low <= high)
{
mid = (low + high) / 2;
if (mid == n) return last;
if (n < mid) high = mid - 1;
else low = mid + 1;
last = mid;
}
}
int com_father(int k, int m, int n)
{
vector<int> fm, fn;
while (m != ((k+1) >> 1))
{
fm.insert(fm.begin(), m);
m = father(k, m);
}
fm.insert(fm.begin(), m);
while (n != ((k + 1) >> 1))
{
fn.insert(fn.begin(), n);
n = father(k, n);
}
fn.insert(fn.begin(), n);
int i;
for (i = 0; i < fm.size() && i < fn.size(); i++)
{
if (fn[i] != fm[i]) break;
}
return fm[i-1];
}
int main()
{
while (true)
{
int k, n1, n2, n3;
cin >> k >> n1 >> n2 >> n3;
k = (2 << k) - 1;
n1 = com_father(k, n1, n2);
n2 = com_father(k, n1, n3);
cout << n2 << endl;
}
return 0;
}
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 除了主业以外,你还有哪些其他收入? #
1326次浏览 35人参与
# 实习如何「偷」产出? #
6546次浏览 90人参与
# 风评不好的公司,你会去吗? #
38858次浏览 252人参与
# 职场新人体验 #
6137次浏览 77人参与
# 实习打杂,要跑路吗 #
4085次浏览 62人参与
# 校园里的破防时刻 #
2221次浏览 38人参与
# 设计人如何选offer #
126636次浏览 746人参与
# 第一份工作应该选高薪还是热爱? #
74376次浏览 721人参与
# 学历贬值真的很严重吗? #
26931次浏览 184人参与
# 你觉得早上几点上班合适? #
73946次浏览 308人参与
# 为什么那么多公司毁约 #
180533次浏览 1338人参与
# 你觉得现在还能进互联网吗? #
15870次浏览 178人参与
# 双非能在秋招上岸吗? #
223626次浏览 1182人参与
# 秋招签约后的心态变化 #
84398次浏览 824人参与
# 打工人的工作餐日常 #
55389次浏览 438人参与
# 外包能不能当跳板? #
38193次浏览 229人参与
# 一人推荐一个值得去的通信/硬件公司 #
187500次浏览 1864人参与
# 考研对你找工作产生了哪些影响? #
34200次浏览 213人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
93833次浏览 694人参与
# 假如你的老板掉河里,你的工作能为他做什么 #
31410次浏览 381人参与