SSL_1079【Cantor表】

Cantor表

题目

现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
SSL_1079【Cantor表】_第1张图片

输入

整数N(1≤N≤10000000)

输出

表中的第N项

Sample Input

7

Sample Output

1/4

解析

由于N<=10000000,我们就要采取更快的方法,将左边加右边的值列出来,我们就会发现每一条对角线左边加右边的值都是一样的,所以考虑循环,水题一个……
上代码!

#include
#include
using namespace std;
int s=2,n,d=0;
int main()
{
 cin>>n;
 while(true)
 {
  for(int i=1;i<=s-1;i++)
  {
   d++;
   if(d==n)
   {
    if(s%2==1)cout<<i<<'/'<<s-i;
    else cout<<s-i<<'/'<<i;
    return 0;
   }
  }
  s++;
 }
 return 0;
}

你可能感兴趣的:(水题,c++)