NYOJ --法雷数列(一)
来源:互联网 发布:淘宝卖家怎么弄花呗 编辑:程序博客网 时间:2024/06/05 18:12
法雷数列(一)
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,以Fn表示。如F5为:0/1,1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5,1/1.
现在给出n让你求其n级法雷数列。
- 输入
- 有多组测试数据组数小于1003,
每组测试数据有一个整数n(0<n<=100). - 输出
- 输出n级法雷数列。
- 样例输入
15
- 样例输出
0/1,1/10/1,1/5,1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,1/1
- 来源
经典题目
Farey Sequence 的构造
思路:
- 法雷数列的构造可采用2分法,即如果 a/b, c/d (a/b <c/d)是一个n级法雷数列中的两个元素,且b+d <=n, 则可以在a/b, c/d 中间插入一个分数 (a+b)/(c+d)。下面以5级法雷数列为例,给出详细的过程。
step1: 准备两个数 0/1, 1/1 作为整个法雷数列的第一个元素和最后一个元素
0/1, 1/1
step2: 在两个数中间插入1个数1/2, 变为
0/1, 1/2, 1/1
step3: 在每对相邻两个数中间插入1个数,变为
0/1, 1/3, 1/2, 2/3, 1/1
step4: 在每对相邻两个数中间插入1个数,变为
0/1, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 1/1
step5: 0/1 和 1/4 之间 和3/4和 1/1 仍然可插入1个数,使得插入的数分母不大于5
0/1, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1
至此,该序列包含了所有分母不大于5的最简真分数,且各个分数以递增顺序排列。 #include<cmath>#include<queue>#include<stack>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))int dir[4][2]= {{0,-1},{-1,0},{0,1},{1,0}};int N;void farey(int a,int b,int c,int d){ if(b+d>N) return ; if(b+d==N) { printf("%d/%d",a+c,b+d); if(a+c!=N-1) printf(","); return ; } farey(a,b,a+c,b+d); printf("%d/%d,",a+c,b+d); farey(a+c,b+d,c,d);}int main(){ while(cin>>N) { if(N==1) printf("0/1,1/1\n"); else { printf("0/1,"); farey(0,1,1,1); printf(",1/1\n"); } } return 0;}
- 法雷数列的构造可采用2分法,即如果 a/b, c/d (a/b <c/d)是一个n级法雷数列中的两个元素,且b+d <=n, 则可以在a/b, c/d 中间插入一个分数 (a+b)/(c+d)。下面以5级法雷数列为例,给出详细的过程。
0 0
- nyoj 333-法雷数列(一)
- NYOJ --法雷数列(一)
- NYOJ 题目334 法雷数列(一)(递归)
- NYOJ Fibonacci数列(四)
- nyoj 461 Fibonacci数列(四)
- 数列极限(一)
- nyoj 找球号(一)
- nyoj 汉诺塔(一)
- nyoj 汉诺塔(一)
- NYOJ-找球号(一)
- NYOJ 汉诺塔(一)
- NYOJ - Fibnacci数列
- 数列转换(nyoj 109)
- nyoj 109 数列转换
- nyoj-1102-Fibonacci数列
- nyoj 109 数列转换
- NYOJ 109数列转换
- NYoj 1102 Fibonacci数列
- vim配置文件
- Pos终端中的主密钥、工作密钥、pin密钥、mac密钥
- 精挑细选
- LeetCode OJ 之 Two Sum(两个数的和)
- 解决github push错误The requested URL returned error: 403 Forbidden while accessing
- NYOJ --法雷数列(一)
- Using the ORDER BY Clause in Set Operations
- UVA 1625—Color Length(ACM/ACPC Daejeon 2011)
- u-boot——start.S文件(属于第一阶段)分析
- Java泛型---泛型方法和泛型类介绍及实例
- zuoye
- 参加某培训机构Java培训记录(八)
- 三角形
- struts+mysql的java程序会出现的错误