清澄A1040. Cantor表

来源:互联网 发布:python爬虫开发 编辑:程序博客网 时间:2024/05/12 06:18
问题描述
  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,然后是1/2,2/1,3/1,2/2...

  你的任务是求表中第N项的值。
输入格式
  输入仅一个正整数n(1<=n<=100000)
输出格式
  以分数形式输出表中的第n项(不用约分)
样例输入
7
样例输出

1/4


#include"stdio.h"
int main()
{
long n;
int i=1,t=1;
long sum=0;
int sheyu,k=0,h=0;
scanf("%ld",&n);
while(n!=sum)
{
if((sum+t)>n)//一旦不是在上端点,则进入这个 
{
sheyu=n-sum;//(i-1)排后,多余的个数 
printf("%d %d\n",i,sheyu);//第i排 第sheyu个 
k=i-sheyu+1;
h=sheyu;
printf("%d/%d",k,h);
break;
}

sum=sum+t;
t++;
i++;

}
if(sum==n)//说明在端点 
    {
   sheyu=i-1;
//   printf("%d %d\n",i-1,sheyu); 所以这里的排数必须i-1。 
   k=i-sheyu;
h=sheyu;
printf("%d/%d",k,h);
    }
    return 0;
}

总结:本题就是一个简单的找规律题目,然后再运用简单的C语言知识进行表达。不涉及什么算法。(开心)

原创粉丝点击