Binary Tree
来源:互联网 发布:网络联盟 编辑:程序博客网 时间:2024/05/20 20:46
Binary Tree
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6355 Accepted: 2922
Description
Background
Binary trees are a common data structure in computer science. In this problem we will look at an infinite binary tree where the nodes contain a pair of integers. The tree is constructed like this:
Problem
Given the contents (a, b) of some node of the binary tree described above, suppose you are walking from the root of the tree to the given node along the shortest possible path. Can you find out how often you have to go to a left child and how often to a right child?
Binary trees are a common data structure in computer science. In this problem we will look at an infinite binary tree where the nodes contain a pair of integers. The tree is constructed like this:
- The root contains the pair (1, 1).
- If a node contains (a, b) then its left child contains (a + b, b) and its right child (a, a + b)
Problem
Given the contents (a, b) of some node of the binary tree described above, suppose you are walking from the root of the tree to the given node along the shortest possible path. Can you find out how often you have to go to a left child and how often to a right child?
Input
The first line contains the number of scenarios.
Every scenario consists of a single line containing two integers i and j (1 <= i, j <= 2*109) that represent
a node (i, j). You can assume that this is a valid node in the binary tree described above.
Every scenario consists of a single line containing two integers i and j (1 <= i, j <= 2*109) that represent
a node (i, j). You can assume that this is a valid node in the binary tree described above.
Output
The output for every scenario begins with a line containing "Scenario #i:", where i is the number of the scenario starting at 1. Then print a single line containing two numbers l and r separated by a single space, where l is how often you have to go left and r is how often you have to go right when traversing the tree from the root to the node given in the input. Print an empty line after every scenario.
Sample Input
342 13 417 73
Sample Output
Scenario #1:41 0Scenario #2:2 1Scenario #3:4 6
给一个节点,计算从根节点到所给节点的所经过的左节点,和右节点的个数。
#include <cstdio>#include <string.h>#include <cmath>#include <iostream>#include <algorithm>#define WW freopen("output.txt","w",stdout)using namespace std;int main(){ int T,w=1; int L,R; int sum; int ans; scanf("%d",&T); while(T--) { scanf("%d %d",&L,&R); sum=0; ans=0; while(L!=1||R!=1) { if(L>R) { int a=(L-1)/R;//进行优化不然会TLE ans+=a; L-=(a*R); } else if(R>L) { int a=(R-1)/L; sum+=a; R-=(L*a); } } printf("Scenario #%d:\n",w++); printf("%d %d\n\n",ans,sum);//两个换行 } return 0;}
0 0
- Binary tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- binary tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- Binary Tree
- binary tree
- cocos2d-x项目打包成exe文件后的音乐无法播放问题
- WordSearchState API
- 统计输入的字符串各个不同字符出现的频度,并存入文件,合法字符为:“A~Z”和“0~9”
- HMMSearchState API
- 三次方格取数
- Binary Tree
- Android活动条(actionbar)使用详解(一)
- 缓存和缓冲的区别
- 设计一个算法,判断字符串S是否对称
- 约瑟夫环问题的解决
- 月计划表
- Hdu 4734 F(x) (数位dp)
- Java并发编程--Fork/Join框架使用
- 随机洗牌算法---我们一起谈谈