就是法雷数列。。。
Consider the set of all reduced fractions between 0 and 1 inclusive with denominators less than or equal to N.
Here is the set when N = 5:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
Write a program that, given an integer N between 1 and 160 inclusive, prints the fractions in order of increasing magnitude.
PROGRAM NAME: frac1
INPUT FORMAT
One line with a single integer N.SAMPLE INPUT (file frac1.in)
5
OUTPUT FORMAT
One fraction per line, sorted in order of magnitude.SAMPLE OUTPUT (file frac1.out)
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
/*
ID: qhn9992
PROG: frac1
LANG: C++11
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
void getans(int a,int b,int c,int d)
{
int nc=a+c,tr=b+d;
if(tr<=n)
{
getans(a,b,nc,tr);
printf("%d/%d\n",nc,tr);
getans(nc,tr,c,d);
}
}
int main()
{
freopen("frac1.in","r",stdin);
freopen("frac1.out","w",stdout);
scanf("%d",&n);
printf("0/1\n");
getans(0,1,1,1);
printf("1/1\n");
return 0;
}