zoukankan      html  css  js  c++  java
  • Full Binary Tree(二叉树找规律)

    Description

    In computer science, a binary tree is a tree data structure in which each node has at most two children. Consider an infinite full binary tree (each node has two children except the leaf nodes) defined as follows. For a node labelled v its left child will be labelled 2 * v and its right child will be labelled 2 * v + 1. The root is labelled as 1.
    You are given n queries of the form i, j. For each query, you have to print the length of the shortest path between node labelled i and node labelled j.
     

    Input

    First line contains n(1 ≤ n ≤ 10^5), the number of queries. Each query consists of two space separated integers i and j(1 ≤ i, j ≤ 10^9) in one line.

     

    Output

    For each query, print the required answer in one line.
     

    Sample Input

    5
    1 2
    2 3
    4 3
    1024 2048
    3214567 9998877

    Sample Output

    1
    2
    3
    1
    44

    Hint

    题目意思:这是一个二叉树,如上图所示,给出二叉树上的而已两个点求出一点到另一点最短的距离或者说是步数。

    解题思路:我们知道二叉树相当于一个自上而下的三角形,任意两个点在上方一定有一个点相交,称其为节点,我们只要找到那个节点就可以了,两点到节点的距离就是最短距离。

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     int t;
     6     long long a,b,m,n,count;
     7     scanf("%d",&t);
     8     while(t--)
     9     {
    10         scanf("%lld%lld",&a,&b);
    11         count=0;
    12         while(1)
    13         {
    14             if(a>b)///两个数较大的那一个减半上移,不断逼近节点
    15             {
    16                 a=a/2;
    17                 count++;
    18             }
    19             if(b>a)
    20             {
    21                 b=b/2;
    22                 count++;
    23             }
    24             if(b==a)
    25                 break;
    26         }
    27         printf("%lld
    ",count);
    28 
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    SessionFactory Cache 的配置
    乱码处理问题
    格式化当前日期
    JDK的安装
    内存和对象内存池技术在网游开发中的注意点和应用
    Head First设计模式C++实现Strategy模式
    介绍三种将二进制字节字符转换为ASCII方法
    C++风格的类型转换的用法
    i++循环与i循环的执行效率
    系统程序员成长计划组合的威力(一)
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/8670142.html
Copyright © 2011-2022 走看看