codeves天梯 Cantor表

 
  

现代数学的著名证明之一是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<=10000000,所以绝对不可以开数组。但这题仔细一看规律实在太明显了,只要找出所求的n在行,再暴力判断就可以得出正解
var     n,i,k,sum:longint;



begin

        readln(n);

        for i:=1 to n do

                if (1+i)*i div 2>=n then break;

        k:=i-1;sum:=(1+k)*k div 2;

        if odd(k) then writeln(n-sum,'/',k+2-n+sum)

                  else writeln(k+2-n+sum,'/',n-sum);

end.

你可能感兴趣的:(codeves天梯)