关注
理解错了,看题目好久,考完做了下
#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
相关推荐
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
14451次浏览 199人参与
# 工作前VS工作后,你的心态变化 #
38408次浏览 267人参与
# 论秋招对个人心气的改变 #
15522次浏览 220人参与
# 从mentor身上学到了__ #
55562次浏览 886人参与
# 程序员找工作至少要刷多少题? #
23355次浏览 297人参与
# 我的省钱小妙招 #
37553次浏览 446人参与
# 机械人避雷的岗位/公司 #
44715次浏览 317人参与
# 为了减少AI幻觉,你注入过哪些设定? #
7214次浏览 202人参与
# 你的mentor是什么样的人? #
51501次浏览 733人参与
# 通信/硬件求职避坑tips #
139892次浏览 1086人参与
# 我和mentor的爱恨情仇 #
106595次浏览 960人参与
# 牛客AI体验站 #
9019次浏览 227人参与
# 毕业论文进行时 #
27620次浏览 153人参与
# 运营来爆料 #
77397次浏览 467人参与
# 应届生进小公司有什么影响吗 #
118723次浏览 1162人参与
# 你现在会用到哪些AI技能? #
24777次浏览 137人参与
# 找实习多的是你不知道的事 #
1789199次浏览 20670人参与
# 运营人的第一份offer应该如何选 #
218911次浏览 1260人参与
# 我现在比当时_,你想录用我吗 #
10046次浏览 141人参与
# 第一次找实习,我建议__ #
71239次浏览 846人参与
查看9道真题和解析
