1999年分区联赛普级组之一 Cantor表(枚举)

来源:互联网 发布:全局最优算法 编辑:程序博客网 时间:2024/05/16 07:06

1999年分区联赛普级组之一 Cantor表

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

分析:先找到第n项在第几列(斜着的),通过观察我们可以发现奇数列分子递减,分母递增,偶数列反之,然后就可以枚举啦。

代码

var  i,j,n,p:longint;begin  readln(n);  p:=1;  while n-p>0 do    begin      dec(n,p);      inc(p);    end;  if odd(p) then    begin      i:=p+1;      j:=0;      while n>0 do        begin          dec(n);          dec(i);          inc(j);        end;    end  else begin         i:=0;         j:=p+1;         while n>0 do           begin             dec(n);             inc(i);             dec(j);           end;       end;  writeln(i,'/',j);end.
阅读全文
0 0
原创粉丝点击