Cantor表
题目
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
输入
整数N(1≤N≤10000000)
输出
表中的第N项
Sample Input
7
Sample Output
1/4
解析
由于N<=10000000,我们就要采取更快的方法,将左边加右边的值列出来,我们就会发现每一条对角线左边加右边的值都是一样的,所以考虑循环,水题一个……
上代码!
#include<iostream>
#include<cstdio>
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;
}