NOIP-Cantor表

时间:2021-11-10 23:49:37

题目描述

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

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

输入描述:

整数N(1≤N≤10000000)

输出描述:

表中的第N项
示例1

输入

复制

7

输出

复制

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