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


我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
输入描述:
整数N(1≤N≤10000000)
输出描述:
表中的第N项
示例1
输出
1/4
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int x=,y=;
int flag=;
while()
{
if(x==)
{
y++;
n--;
if(n==)
break;
while(y>)
{
y--;
x++;
n--;
if(n==)
{
flag = ;
break;
}
}
if(flag == )
break;
}
else if(y==)
{
x++;
n--;
if(n==)
break;
while(x>)
{
x--;
y++;
n--;
if(n==)
{
flag = ;
break;
}
}
if(flag==)
break;
}
}
cout<<x<<"/"<<y;
}
总结:
纯模拟,没技巧,判断点为行为1或列为1