【洛谷每日一题】P1014 [NOIP1999 普及组] Cantor 表 您所在的位置:网站首页 格力洗衣烘干一体机好不好用 【洛谷每日一题】P1014 [NOIP1999 普及组] Cantor 表

【洛谷每日一题】P1014 [NOIP1999 普及组] Cantor 表

2024-01-23 09:10| 来源: 网络整理| 查看: 265

[NOIP1999 普及组] Cantor 表 题目描述

现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

我们以 Z 字形给上表的每一项编号。第一项是 1 / 1 1/1 1/1,然后是 1 / 2 1/2 1/2, 2 / 1 2/1 2/1, 3 / 1 3/1 3/1, 2 / 2 2/2 2/2,…

输入格式

整数 N N N( 1 ≤ N ≤ 1 0 7 1 \leq N \leq 10^7 1≤N≤107)。

输出格式

表中的第 N N N 项。

样例 #1 样例输入 #1 7 样例输出 #1 1/4 答案 #include int main(void) { int n = 0, k = 1; // n代表编号,k代表行数(第k行有k个数) scanf("%d", &n); while (n > k) // 如n>k,减去每行的个数 { n -= k; // 减去之前每行的数,最终n就会等于在该行中的序号(如从左到右第几个) ++k; // 行数加1 } if (k % 2 == 0) // 如果行数是偶数行,则数是从右向左数的 printf("%d/%d\n", n, (k + 1 - n)); // 此时n的含义就是从右向左第几个,在该种情况下,分子就是n,而分母等于k+1-n else // 如果行数是奇数行,则数是从左向右数的 printf("%d/%d\n", k + 1 - n, n); // 此时n的含义就是从左向右第几个,在该种情况下,分母就是n,而分子等于k+1-n return 0; }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有