1758:二叉树

简介: 题目链接:http://noi.openjudge.cn/ch0306/1758/总时间限制: 1000ms   内存限制: 65536kB描述如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。

题目链接:http://noi.openjudge.cn/ch0306/1758/

总时间限制: 1000ms   内存限制: 65536kB
描述

如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点(编号是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)。
输入
输入只有一行,包括两个正整数x和y,这两个正整数都不大于1000。
输出
输出只有一个正整数x i
样例输入
10 4
样例输出
2
 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     int x,y;
 5     scanf("%d%d",&x,&y);
 6     while(x!=y)
 7     {
 8         if(x>y) x=x/2;
 9         else y=y/2;
10     }
11     printf("%d\n",x);
12     return 0;
13 }

 

相关文章
|
机器学习/深度学习 存储 算法
深入理解【二叉树】
深入理解【二叉树】
92 0
|
C语言
【二叉树】的实现
【二叉树】的实现
41 0
二叉树的讲解
1.若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1) 个结点. 2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2^h-1. 3. 对任何一棵二叉树, 如果度为0其叶结点个数为n0 , 度为2的分支结点个数为02 ,则有n0 =n2 +1 4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h= . (ps: 是log以2为底,n+1为对数) 5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:
二叉树的讲解
|
7月前
|
算法 网络协议 NoSQL
认识二叉树(详细介绍)
认识二叉树(详细介绍)
|
7月前
|
存储 数据库管理
【二叉树】
【二叉树】
54 0
24 二叉树
24 二叉树
55 0
|
存储
二叉树的相关列题!!
二叉树的相关列题!!
84 0
|
存储
二叉树讲解
二叉树讲解
82 0
|
存储
【二叉树】(一)
【二叉树】(一)
51 0