就是法雷数列。。。
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; }