Cantor表 1083

时间:2023-03-09 14:42:16
Cantor表  1083
题目描述 Description

现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 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字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…

Cantor表  1083

输入描述 Input Description

整数N(1≤N≤10000000)

输出描述 Output Description

表中的第N项

样例输入 Sample Input

7

样例输出 Sample Output

1/4

数据范围及提示 Data Size & Hint

见描述

思路 模拟+统计

 #include<cmath>
 #include<cstdio>
 #include<string>
 #include<cstring>
 #include<iostream>
 #include<algorithm>
 using namespace std;
 int re(int a,int b)
 {
     cout<<a<<'/'<<b<<endl;
     ;
 }
 int main()
 {
     int n;
     cin>>n;
     ,i=,j=;
     ,J=;
     <)
     {
         )
         {
             if(I)
             {
                 if(x==n)
                 {
                     re(i,j);
                     ;
                 }
                 j++;
                 x++;
             }
             )
                 {
                     if(x==n)
                     {
                         re(i,j);
                         ;
                     }
                     i++;
                     j--;
                     x++;
                 }
             I=!I;
         }
         &&i!=)
         {
             if(J)
             {
                 if(x==n)
                 {
                     re(i,j);
                     ;
                 }
                 i++;
                 x++;
             }
             )
                 {
                     if(x==n)
                     {
                         re(i,j);
                         ;
                     }
                     i--;
                     j++;
                     x++;
                 }
             J=!J;
         }
     }
     cout<<i<<'/'<<j<<endl;
     ;
 }