题目:
题目描述 []展开
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
1/1,1/2,1/3,1/4,1/5,..
2/1,2/2,2/3,2/4,...
3/1,3/2, 3/3,...
4/1,4/2,..
5/1,...
我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
输入格式
整数N(1<N<107)。
输出格式
表中的第N项。
输入输出样例
输出 #1 复制
输入 #1 复制
7 1/4
代码如下:
#include <stdio.h>
int f(int n);
int main()
{
int n,i,temp;
scanf("%d",&n);
for(i=1;i<10000;i++)
{
if(n==1)
{
printf("1/1");
break;
}
if(n-f(i)<=0)
{
temp=f(i-1);
printf("%d/%d",n-temp,i+1-n+temp);
break;
}
}
}
int f(int n)
{
if(n==1)
return 1;
else
return f(n-1)+n;
}
如有错误欢迎评论