csu2140—A Rational Sequence(递归)
来源:互联网 发布:北京网络挂号平台 编辑:程序博客网 时间:2024/06/13 23:48
题目链接:传送门
H(1946): A Rational Sequence
Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 21 Solved: 14Description
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:
A rational sequence is defined by doing a level order (breadth first) traversal of the tree (indicated by the light dashed line). So that:
Write a program to compute the nth element of the sequence, F(n). Does this problem sound familiar? Well it should! But we changed it a little!
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, and the index, N, of the sequence element to compute (1 <= N <= 2147483647).
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 numerator of the fraction, followed immediately by a forward slash (‘/’) followed immediately by the denominator of the fraction. Inputs will be chosen so neither the numerator nor the denominator will overflow an 32-bit unsigned integer.
Sample Input
41 12 43 114 1431655765
Sample Output
1 1/12 1/33 5/24 2178309/1346269
解题思路:对于二叉树的结点n,左结点为2n,右结点为2n+1
对于当前给出的结点编号递归向上回到起点,然后从起点向下计算出结点的数值
额,当时竟然找了半天规律,太菜了
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <queue>#include <set>#include <string>#include <stack>#include <algorithm>#include <map>using namespace std; typedef long long ll;const int N = 10007;const int M = 100000000;const int INF = 0x3fffffff;const int mod = 1e9+7;const double Pi = acos(-1.0);const double sm = 1e-9;typedef pair<int,int> PA; PA getValue( int p ){PA s;if( p == 1 ) return PA(1,1);PA t = getValue(p/2);if( p%2 == 0 ){s.first = t.first;s.second = t.first+t.second;}else{s.first = t.first+t.second;s.second = t.second;}return s;}int main(){int T;scanf("%d",&T);while( T-- ){int n,m;scanf("%d%d",&n,&m);PA ans = getValue(m);printf("%d %d/%d\n",n,ans.first,ans.second);}return 0;}
- csu2140—A Rational Sequence(递归)
- 【UESTC】1426 - A Rational Sequence (递归)
- CSU 1946 A Rational Sequence (递归)
- 递归搜索 ( 水题 )——A Rational Sequence ( UVA 7363 )
- 【纽约区域赛】-E-A Rational Sequence (递归,满二叉树)
- Uva 7363 -- A rational Sequence(简单)
- ICPC 7096 A Rational Sequence
- H(1946): A Rational Sequence
- UVALive 7363 A Rational Sequence (二叉树)
- ACdream 1187——Rational Number Tree(二进制,递归)
- Problem E - A Rational Sequence 2015 ACM/ICPC Greater New York Region
- ACM ICPC Greater NewYork Region 2015 Problem E-A Rational Sequence
- codeforces343A A. Rational Resistance
- A. Rational Resistance----贪心
- A - Farey Sequence——(筛法求欧拉函数)
- ACM(递归递推—A)
- 递归数列(recursive sequence)
- CodeForces 343A Rational Resistance
- working on the way
- mysql乐观锁总结和实践
- Shiro(2)---授权
- centos6.7安装jdk
- Java基础篇Map集合类简介和使用原理剖析
- csu2140—A Rational Sequence(递归)
- 引入AOP--代理的比较
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 02 如何创建线程 线程并发
- 以太坊的Java客户端使用
- oracle start with实现递归查询实例
- 解读Cardinality Estimation算法(第二部分:Linear Counting)
- Copy-and-swap idiom详解和实现安全自我赋值
- caffe安装笔记