NYNU_省赛选拔题(7)

题目描述

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.

输入

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.

输出

For each query, print the required answer in one line

样例输入

2
1024 2048
3214567 9998877

样例输出

1
44
 1 #include <iostream>
 2 using namespace std;
 3 int f[10000];
 4 int len;
 5 void pre()
 6 {
 7     f[0]=1;
 8     for(int i=1;;i++){
 9         f[i]=f[i-1]*2;
10         if(f[i]>1e9){
11             len=i-1;
12             break;
13         }
14     }
15 }
16 int a,b;
17 int t;
18 int main()
19 {
20     pre();
21     while(cin>>t)
22     while(t--){
23         cin>>a>>b;
24         if(a>b)swap(a,b);
25         int cnt=0;
26         int l;
27         for(int i=0;i<len;i++){
28             if(a>=f[i]&&a<f[i+1]){
29                 l=i;break;}
30         }
31         while(1)          {
32             if(b>=f[l]&&b<f[l+1])
33             break;
34             b/=2;
35             cnt++;
36         }
37         while(a!=b){
38             a/=2;
39             b/=2;
40             cnt+=2;
41         }
42         cout<<cnt<<endl;
43     }
44     return 0;
45 } 
时间: 2024-08-28 17:48:51

NYNU_省赛选拔题(7)的相关文章

NYNU_省赛选拔题(5)

题目描述 P 的一家要出去旅游,买了当地的地图,发现各地分别由各个景点,若 P 想使家人分队去景点,尽快到达各个景点(必须所有景点),并且最终所有家人都到达 M 所在的景点.   你用程序告诉 P 最少需要多少天才能完成这次旅游.假设 P 的家人足够多,各分队速度一样. 输入 首先是一个正整数T,接下来是T组测试数据,每组数据第一行是两个整数n,m(2=<n<=1000,1=<m<=10000),分别表示景点数量和总边数,山寨编号0,1,2,3…n-1接下来m行,每行三个整数i,j

NYNU_省赛选拔题(6)

题目描述 有一天,小米找到了一个藏宝的迷宫地图,迷宫在一个沙漠里有,迷宫里面有许多宝藏.迷宫里可能有N个藏宝地点,用1到K标记.藏宝地点之间最多有一条通路相连.标记1为迷宫的进出口. 他已经知道其中K(1<=K<=N)个不同的地点真的藏有宝物.小米决定让他的机器人米多奇去探险.迷宫中的通路不是平坦的,到处都是陷阱.假设每条通路都有一个危险度,其值与通过此路的载重量成正比.米多奇在经过某个藏宝地点时可能会拿走宝物.但它每拿走一个藏宝地点的宝物后,它的载重量就会增加w. 当机器人米多奇进入迷宫时,

20160423/24省赛选拔总结

最近一直在重温c语言,没有时间总结比赛,眼看还有一年就要准备实习了,大部分精力都放在为找工作做准备的阶段,没有太多精力刷题,能做的只是总结每一场训练赛中的失误与不足 省赛选拔虽然选上了,但还是很不顺利,,,,,,,,,,,我和小王去年国赛因为题意的问题错失了一枚铜牌,这次再次因为题意翻译出了问题卡了一场比赛:: 第一天:::刚发下来,我们3个人还算很准确,分别翻译A,B,C, 我先把B题翻译出来了,明确了思路,我直接上去敲B题,一遍AC过,我昨晚,学长翻译完了A题,并且有了思路,确定了用状压DP

acm省赛选拔组队赛经验谈

省赛组队赛已经进行5场了,过半了. 从曾经的不会组队到如今逐渐磨合,尽管每次都有遗憾,可是我认为我们一直在进步.有些失误是要记录下来下次不能再犯的! 经验: 1:上场開始一定要有人(英语能力和算法综合能力较强者)读全然部题目,对全部题目的难易程度做一个大概推断,以确定做题顺序,不要在比赛完了发现有水题没有看! 2:对于一个自己没有100%把握AC的题目,最好拉一个队友讲一下思路,假设队友认可了再写程序,防止一道题目花费了一个多小时代码敲到快完了发现思路是不可行的,并且这样在你一次不能AC的情况下

sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

Sdut 2108 Alice and Bob(数学题)(山东省ACM第四届省赛D题)

题目地址:sdut 2608 Alice and Bob Alice and Bob Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynomial like this: (a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*....

sdut 2603 Rescue The Princess(算是解析几何吧)(山东省第四届ACM省赛A题)

题目地址:sdut 2603 Rescue The Princess Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry the princess

CSU 1425 NUDT校赛 I题 Prime Summation

这个题本来有希望在比赛里面出了的 当时也想着用递推 因为后面的数明显是由前面的推过来的 但是在计算的时候 因为判重的问题 ...很无语.我打算用一个tot[i]来存i的总种树,tot[i]+=tot[j]//j为可以由j推到i的一系列数,但这样是不对的,会产生大量重复计算... 看了下标程才发现要用二维来计算出种类总数,f[i][j]+=sum(f[i-j][k]) 表示在推i数的时候,第一个素数为j的种类数,注意j一定为素数,而且k不能大于j...标程里面处理的比较简练,就学了下他的写法. 至