题解 P1014 【Cantor表】

· · 题解

P1014 【Cantor表】

模拟题

建议在Excel上打出Cantor表,再找规律(还有一个好处是可以用来测试)

如图 如表:

1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9

2/1 2/2 2/3 2/4 2/5 2/6 2/7 2/8

3/1 3/2 3/3 3/4 3/5 3/6 3/7

4/1 4/2 4/3 4/4 4/5 4/6

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

6/1 6/2 6/3 6/4

7/1 7/2 7/3

8/1 8/2

9/1

(普及)在单元格中输入分数前先输入一个单引号,避免被判断为日期

    #include<cstdio>
    int main() {
        int n, i=0, j=0;//前i条斜线一共j个数
        scanf("%d", &n);
        while(n>j) {//找到最小的i使得j>=n
            i++;
            j+=i;
        }
        if(i%2==1)
            printf("%d/%d",j-n+1,i+n-j);//i的奇偶决定着斜线上数的顺序,n是第i条斜线上倒数第j-n+1个数
        else
            printf("%d/%d",i+n-j,j-n+1);//若i是偶数,第i条斜线上倒数第i个元素是(i+1-i)/i
        return 0;
}