关注
理解错了,看题目好久,考完做了下
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
int data[10000];
void buildtree(int n)
{
int zhi = n - 1;
int index = 1;
for (int i = 0; i < zhi; i++)
{
index = index * 2;
}
int end = index * 2 - 1;
for (int i = index; i <= end; i++)
{
data[i] = 2 * (i - index) + 1;
}
for (int i = index - 1; i >= 1; i--)
data[i] = (data[i * 2] + data[i * 2 + 1]) / 2;
}
void findroot(int m, int p, int q)
{
int index1 = 0;
int index2 = 0;
int index3 = 0;
for (int i = 1; i < 10000; i++)
{
if (data[i] == m)
index1 = i;
if (data[i] == p)
index2 = i;
if (data[i] == q)
index3 = i;
}
while (index1 != index2)
{
if (index1 > index2)
index1 = index1/ 2;
else if (index2 > index1)
index2 = index2 / 2;
}
while (index3 != index2)
{
if (index3 > index2)
index3= index3 / 2;
else if (index2 > index3)
index2 = index2 / 2;
}
cout << data[index3]<< endl;
}
int main()
{
int n, m, p, q;
while (cin >> n >> m >> p >> q)
{
buildtree(n);
findroot(m, p, q);
}
}
查看原帖
点赞 4
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习如何「偷」产出? #
6413次浏览 88人参与
# 除了主业以外,你还有哪些其他收入? #
1326次浏览 35人参与
# 风评不好的公司,你会去吗? #
38858次浏览 252人参与
# 实习打杂,要跑路吗 #
3990次浏览 61人参与
# 职场新人体验 #
6102次浏览 77人参与
# 校园里的破防时刻 #
2221次浏览 38人参与
# 设计人如何选offer #
126636次浏览 746人参与
# 第一份工作应该选高薪还是热爱? #
74376次浏览 721人参与
# 学历贬值真的很严重吗? #
26931次浏览 184人参与
# 一人推荐一个值得去的通信/硬件公司 #
187500次浏览 1864人参与
# 你觉得早上几点上班合适? #
73946次浏览 308人参与
# 为什么那么多公司毁约 #
180533次浏览 1338人参与
# 秋招签约后的心态变化 #
84398次浏览 824人参与
# 你觉得现在还能进互联网吗? #
15870次浏览 178人参与
# 双非能在秋招上岸吗? #
223626次浏览 1182人参与
# 打工人的工作餐日常 #
55389次浏览 438人参与
# 外包能不能当跳板? #
38193次浏览 229人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
93833次浏览 694人参与
# 考研对你找工作产生了哪些影响? #
34200次浏览 213人参与
# 假如你的老板掉河里,你的工作能为他做什么 #
31410次浏览 381人参与