二叉树的性质(二叉树)

该博客介绍了一种无限二叉树的数据结构,并提出问题:从树根到给定的有效节点,需要向左子树走多少次,向右子树走多少次。通过输入测试用例,计算出对应的左子树和右子树行走次数。代码中提供了解决方案,使用辗转相除法计算路径。
摘要由CSDN通过智能技术生成

题目描述

在计算机科学中,二叉树是一种普通的数据结构。在本题中,给出一棵无限的二叉树,结点被标识为一对整数,构造如下:
树根被标识为整数对(1, 1);
如果一个结点被标识为(a, b),那么其左子树树根被标识为(a + b, b),其右子树树根被标识为(a, a + b)。

给出上述二叉树的某个结点标识(a, b),假定从树根到这一给定的结点是沿着最短的路径走,你能给出多少次要向左子树走,多少次要向右子树走?

输入

第一行给出测试用例个数。每个测试用例占一行,由两个整数i和j组成(1<=i, j<=2*10^9),表示结点的标识(i, j)。假定给出的结点都是有效的结点。

输出

对每个测试用例,第一行为“Scenario #i:”,其中i是测试用例编号,从1开始编号;然后输出一行给出两个整数l和r,中间用1个空格隔开,其中l是从树根到该结点要向左子树走的次数,r是从树根到该结点要向右子树走的次数。在每个测试用例结束后输出一个空行。

样例输入Copy

3
42 1
3 4
17 73

样例输出Copy

Scenario #1:
41 0

Scenario #2:
2 1

Scenario #3:
4 6

代码:

#include<iostream>
#include<iomanip>
#include<string>
#include<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值