当前位置:网站首页>POJ-2499 Binary Tree
POJ-2499 Binary Tree
2022-07-05 12:14:00 【Full stack programmer webmaster】
Binary Tree
Time Limit: 1000MS | Memory Limit: 65536K | |
|---|---|---|
Total Submissions: 5211 | Accepted: 2420 |
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:
- 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*10 9) 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
3
42 1
3 4
17 73Sample Output
Scenario #1:
41 0
Scenario #2:
2 1
Scenario #3:
4 6 1 /*
2 The question : root (a,b), The left child is (a+b,b), The right child is (a,a+b)
3 Given (m,n), The initial root is (1,1), from (1,1) To (m,n) You need to walk to the left sub tree several times ,
4 Walk to the right sub tree several times .
5 Ideas : Converse thinking , from (m,n) To (1,1).
6 Given (m,n), Beg his father , If m>n, Then his father is (m-n,n),
7 otherwise (m,n-m).
8 Code 1 : ----TLE
9 #include <iostream>
10
11 using namespace std;
12
13 int main()
14 {
15 int T, a, b, lcnt, rcnt;
16 cin >> T;
17 for(int i = 1; i <= T; ++i)
18 {
19 cin >> a >> b;
20 lcnt = rcnt = 0;
21 while(a != 1 || b != 1)
22 {
23 if(a >= b)
24 {
25 ++lcnt;
26 a -= b;
27 }
28 else
29 {
30 ++rcnt;
31 b -= a;
32 }
33 }
34 cout << "Scenario #" << i << ':' << endl;
35 cout << lcnt << ' ' << rcnt << endl <<endl;
36 }
37 return 0;
38 }
39
40 Code 2 :
41 Use division instead of subtraction , The quotient obtained is the number of times to go left , final m=m%n.
42 n>m And so on .
43 Here's the thing to watch out for :
44 If m>n,m%n == 0 What do I do ? Because root (1,1) There can be no 0 There is , So special treatment :
45 frequency :m/n-1;m=1
46 */
47 #include <iostream>
48
49 using namespace std;
50
51 int main()
52 {
53 int T, a, b, lcnt, rcnt;
54 cin >> T;
55 for(int i = 1; i <= T; ++i)
56 {
57 cin >> a >> b;
58 lcnt = rcnt = 0;
59 while(a != 1 || b != 1)
60 {
61 if(a >= b)
62 {
63 if(a % b)
64 {
65 lcnt += a/b;
66 a %= b;
67 }
68 else
69 {
70 lcnt += a/b-1;
71 a = 1;
72 }
73 }
74 else
75 {
76 if(b % a)
77 {
78 rcnt += b/a;
79 b %= a;
80 }
81 else
82 {
83 rcnt += b/a-1;
84 b = 1;
85 }
86 }
87 }
88 cout << "Scenario #" << i << ':' << endl;
89 cout << lcnt << ' ' << rcnt << endl <<endl;
90 }
91 return 0;
92 }Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/110203.html Link to the original text :https://javaforall.cn
边栏推荐
- MySQL multi table operation
- 一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用
- 互联网公司实习岗位选择与简易版职业发展规划
- Matlab label2idx function (convert the label matrix into a cell array with linear index)
- Recyclerview paging slide
- IPv6与IPv4的区别 网信办等三部推进IPv6规模部署
- 报错ModuleNotFoundError: No module named ‘cv2.aruco‘
- 你做自动化测试为什么总是失败?
- 【L1、L2、smooth L1三类损失函数】
- Yolov5 target detection neural network -- calculation principle of loss function
猜你喜欢

MySQL splits strings for conditional queries

Pytorch softmax regression

【yolov5.yaml解析】

Redis cluster (master-slave) brain crack and solution

Embedded software architecture design - message interaction

Matlab boundarymask function (find the boundary of the divided area)

报错ModuleNotFoundError: No module named ‘cv2.aruco‘
Take you two minutes to quickly master the route and navigation of flutter

Multi table operation - sub query

abap查表程序
随机推荐
Error modulenotfounderror: no module named 'cv2 aruco‘
多表操作-子查询
Two minutes will take you to quickly master the project structure, resources, dependencies and localization of flutter
Multi table operation - Auto Association query
【load dataset】
MySQL basic operation -dql
Get all stock data of big a
July Huaqing learning-1
codeforces每日5题(均1700)-第五天
自动化测试生命周期
Principle of persistence mechanism of redis
Intern position selection and simplified career development planning in Internet companies
Reinforcement learning - learning notes 3 | strategic learning
What is digital existence? Digital transformation starts with digital existence
Why learn harmonyos and how to get started quickly?
互联网公司实习岗位选择与简易版职业发展规划
Hiengine: comparable to the local cloud native memory database engine
什么是数字化存在?数字化转型要先从数字化存在开始
【TFLite, ONNX, CoreML, TensorRT Export】
The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix