Cantor数表

Georg Cantor用这张数表证明了有理数是可枚举的

刘汝佳教主的白书上有这道题,不过貌似解答是错误的T_T

1/1  1/2  1/3  1/4  1/5 …
2/1  2/2  2/3  2/4  …
3/1  3/2  3/3  …
4/1  4/2  …
5/1  …

网上说Z字型编号。。。我怎么就不觉得是Z字型。。。明明是蛇形

1-1/1; 2-1/2; 3-2/1; 4-3/1; 5-2/2; 6-1/3.....

如下图

Cantor数表

输出第N项的值:

样例输入:

3

14

7

12345

样例输出:

2/1

2/4

1/4

59/99

 

 1 #include <stdio.h>
2
3 int main(void)
4 {
5 int n;
6
7 while (scanf("%d", &n) == 1)
8 {
9 int k = 1;
10 while (k < n) //k为第N项所在行数
11 {
12 n -= k;
13 k++;
14 }
15 if (0 == k%2)
16 {
17 printf("%d/%d\n", n, k+1-n);
18 }
19 else
20 {
21 printf("%d/%d\n", k+1-n, n);
22 }
23 }
24
25 return 0;
26 }



 

 

 


你可能感兴趣的:(ant)