本文主要是介绍RQNOJ292 Cantor表 题解、、,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:Cantor表
问题编号:292
题目描述
现代数学的著名证明之一是GeorgCantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
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项。
输入格式
仅一行,一个整数N。 (1<N<=13000)
输出格式
表中的第N项
样例输入
7
样例输出
1/4 (注意,是分数)
纯模拟、看到n<13000没? O(n)模拟不会超时、于是果断模拟,但是我还是WA掉一次哎
代码如下。(走的是很难看的if流!)
Begin
Readln(n);
Up:=1;down:=1;f:=0;
Fori:=2 to n do
Begin
If(f=1)then
Begin
If(down=1)then
Begin
Inc(up);
F:=0;
Continue;
End;
Inc(up);
Dec(down);
Endelse begin
If(up=1)then
Begin
F:=1;
Inc(down);
Continue;
End;
Dec(up);
Inc(down);
End;
End;
Writeln(up,’/’,down);
End.
这篇关于RQNOJ292 Cantor表 题解、、的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!