/ Vijos / 题库 /

又是二叉树

又是二叉树

时间限制:1秒  内存限制:256M


【题目描述】

          说明
  如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。现在请你完成下面两个任务:
  **任务1:** 从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从10到根结点的路径是(10, 5, 2, 1),从4到根结点的路径是(4, 2, 1),从根结点1到根结点的路径上只包含一个结点1,因此路径就是(1)。对于两个结点x和y,假设他们到根结点的路径分别是 \((x_1, x_2, ... ,1)\) 和 \((y_1, y_2, ... ,1)\)(这里显然有 \(x = x_1,y = y_1\)),那么必然存在两个正整数 \(i\) 和 \(j\),使得从 \(x_i\) 和 \(y_j\) 开始,有 \(x_i = y_j , x_{i + 1} = y_{j + 1}, x_{i + 2} = y_{j + 2},...\) 现在的问题就是,给定 \(x\) 和 \(y\) ,要求 \(x_i\)(也就是 \(y_j\))。
  **任务2:** 我们已知上图所示的这个二叉树的最后一个结点是 \(n\)。现在的问题是,结点\(m\)所在的子树中一共包括多少个结点。比如,\(n = 12,m = 3\) 那么上图中的结点13,14,15以及后面的结点都是不存在的,结点 \(m\) 所在子树中包括的结点有3,6,7,12,因此结点 \(m\) 的所在子树中共有 4 个结点。

【输入格式】

  第一行,针对任务1 的输入,包括两个正整数 \(x\) 和 \(y\)。
  第二行,针对任务2 的输入,包括两个正整数 \(n\) 和 \(m(m<=n)\)。

【输出格式】

  第一行,输出任务1 的结果,只有一个正整数\(x_i\)。
  第二行,输出任务2 的结果,只有一个正整数,表示节点 \(m\) 所在的子树的节点数量。

【输入输出样例】

 Input

10 4
12 3

 Output

2
4

【数据限制】

  \(x、y、n、m\) 均是不大于 1 000 000 000 的正整数。

【来源】

  Mr.he

信息

ID
1280
难度
3
分类
树结构 点击显示
标签
递交数
0
已通过
0
通过率
?
被复制
2
上传者