3389 - cantor表

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

 

<span>&nbsp;</span><span style="line-height:1.5;">我们以</span><span style="line-height:1.5;">Z</span><span style="line-height:1.5;">字形给上表的每一项编号。第一项是</span><span style="line-height:1.5;">1/1</span><span style="line-height:1.5;">,然后是</span><span style="line-height:1.5;">1/2</span><span style="line-height:1.5;">,</span><span style="line-height:1.5;">2/1</span><span style="line-height:1.5;">,</span><span style="line-height:1.5;">3/1</span><span style="line-height:1.5;">,</span><span style="line-height:1.5;">2/2</span><span style="line-height:1.5;">,…</span> 

题目输入

整数N(1≤N≤10000000)

题目输出

表中的第N

输入/输出样例

题目输入

7

题目输出

1/4

提示

上传者:吕红波

C++解答

#include<iostream>
using namespace std;
int main()
{
	long h,fz,fm,n,sum=0;
	cin>>n;
	h=0;
	sum=0;
	while(sum<n)
	{
		h++;
		sum+=h;		
	}
	sum-=h;
	int m;//表示第m项
	m=n-sum;
	if(h&1)
	{
		fm=m;
		fz=h+1-m;
	} 
	else
	{
		fz=m;
		fm=h+1-m;
	}
	cout<<fz<<'/'<<fm<<endl;
	return 0;
}

提示

上传者:吕红波

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题