1625: Cantor表
Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 16 Solved: 14 Scores: 88.98
[ Submit][ Status][ BBS]
Description
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
Input
整数N(1≤N≤10000000)
Output
表中的第N项。
Sample Input
7
Sample Output
1/4
这是个数学题。斜着看图,按照对角线,可以看出规律。
#include<iostream>
using namespace std;
int main()
{
long long n;
while(cin >> n)
{
long long minn;
for(int i = 1;i<=10000010;i++)
{
if((1+i)*i/2 < n)minn = i;
else
break;
}
long long k = 0 ;
if(minn%2==0)
{
k = n-(1+minn)*minn/2;
cout<<minn+1-(k-1)<<"/"<<k<<endl;
}
else
{
k = n-(1+minn)*minn/2;
cout<<k<<"/"<<minn+1-(k-1)<<endl;
}
}
return 0;
}