【纽约区域赛】-E-A Rational Sequence (递归,满二叉树)
2017-03-02 18:17
295 查看
E A Rational Sequence
A sequence of positive rational numbers is defined as follows:
An infinite full binary tree labeled by positive rational numbers is defined by:
The label of the root is 1/1.
The left child of label p/q is p/(p+q).
The right child of label p/q is (p+q)/q.
The top of the tree is shown in the following figure:
The sequence is defined by doing a level order (breadth first) traversal of the tree (indicated by the
light dashed line). So that:
F(1) = 1/1, F(2) = 1/2, F(3) = 2/1, F(4) = 1/3, F(5) = 3/2, F(6) = 2/3, …
Write a program which finds the value of n for which F(n) is p/q for inputs p and q.
Greater New York Regional E • A Rational Sequence
Input
The first line of input contains a single integer P, (1 P 1000), which is the number of data sets
that follow. Each data set should be processed identically and independently.
Each data set consists of a single line of input. It contains the data set number, K, a single space, the
numerator, p, a forward slash (/) and the denominator, q, of the desired fraction.
Output
For each data set there is a single line of output. It contains the data set number, K, followed by a
single space which is then followed by the value of n for which F(n) is p/q. Inputs will be chosen so n
will fit in a 32-bit integer.
Sample Input Sample Output
4
1 1/1
2 1/3
3 5/2
4 2178309/1346269
1 1
2 4
3 11
4 1431655765
A sequence of positive rational numbers is defined as follows:
An infinite full binary tree labeled by positive rational numbers is defined by:
The label of the root is 1/1.
The left child of label p/q is p/(p+q).
The right child of label p/q is (p+q)/q.
The top of the tree is shown in the following figure:
The sequence is defined by doing a level order (breadth first) traversal of the tree (indicated by the
light dashed line). So that:
F(1) = 1/1, F(2) = 1/2, F(3) = 2/1, F(4) = 1/3, F(5) = 3/2, F(6) = 2/3, …
Write a program which finds the value of n for which F(n) is p/q for inputs p and q.
Greater New York Regional E • A Rational Sequence
Input
The first line of input contains a single integer P, (1 P 1000), which is the number of data sets
that follow. Each data set should be processed identically and independently.
Each data set consists of a single line of input. It contains the data set number, K, a single space, the
numerator, p, a forward slash (/) and the denominator, q, of the desired fraction.
Output
For each data set there is a single line of output. It contains the data set number, K, followed by a
single space which is then followed by the value of n for which F(n) is p/q. Inputs will be chosen so n
will fit in a 32-bit integer.
Sample Input Sample Output
4
1 1/1
2 1/3
3 5/2
4 2178309/1346269
1 1
2 4
3 11
4 1431655765
#include <cstdio> #include <stack> #include <queue> #include <cmath> #include <vector> #include <cstring> #include <algorithm> using namespace std; #define CLR(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define LL long long LL h; LL search(LL a,LL b) //返回当前节点,前面节点的个数 (再加上上面所有节点的个数((1<<h)-1)即可) { h++; if(a==b) //当返回根结点时,根节点前面没有节点,所以是 0 return 0; if(a>b) return (search(a-b,b))*2; if(a<b) return (search(a,b-a))*2-1; } int main() { int u; LL k,a,b; scanf("%d",&u); while(u--) { h=0; scanf("%lld %lld/%lld",&k,&a,&b); printf("%lld %lld\n",k,search(a,b)+((LL)1<<h)-1); } return 0; }
相关文章推荐
- 【UESTC】1426 - A Rational Sequence (递归)
- CSU 1946 A Rational Sequence (递归)
- 区域增长算法递归实现
- HUST 1025 Sequence(递归 + 重复计算消除)
- UVA 10479 - The Hendrie Sequence(规律+递归)
- 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
- 2016 沈阳区域赛第三题(Recursive sequence)(矩阵快速幂)
- 多边形区域填充算法--递归种子填充算法
- 算法系列之十二:多边形区域填充算法--递归种子填充算法
- 递归搜索 ( 水题 )——A Rational Sequence ( UVA 7363 )
- 算法系列之十二:多边形区域填充算法--递归种子填充算法
- uva 10479 - The Hendrie Sequence(规律+递归)
- 【寒江雪】区域填充算法递归实现
- LeetCode-60-Permutation Sequence 暴力递归
- 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
- Java递归示例2:实现区域树
- 递归实现 满二叉树的节点数计算
- 2062 【字典序】【递归】Subset sequence
- 采用递归实现二值化图像连通区域的区域生长算法
- ACM ICPC Greater NewYork Region 2015 Problem E-A Rational Sequence