返回首页 返回题库

Recamán数列排序

C++ 简单 GESP四级真题 #数组#模拟#排序#标记数组

题目描述

题面描述

小杨最近发现了有趣的Recamán数列,这个数列是这样生成的:

  • 数列的第1项 是1;
  • 如果 是正整数并且没有在数列中出现过,那么数列的第 项 为 ,否则为 。

小杨想知道Recamán数列的前 项从小到大排序后的结果。手动计算非常困难,小杨希望你能帮他解决这个问题。

输入格式

第一行,一个正整数 。

输出格式

一行, 个空格分隔的整数,表示Recamán数列的前 项从小到大排序后的结果。

样例1

输入:

5

输出:

1 2 3 6 7

样例2

输入:

8

输出:

1 2 3 6 7 12 13 20

样例解释

对于样例1, :

  • ;
  • ,不是正整数,因此 ;
  • ,不是正整数,因此 ;
  • ,是正整数,且没有在数列中出现过,因此 ;
  • ,不是正整数,因此 ;

从小到大排序后的结果为1 2 3 6 7。

数据范围

对于所有数据点,保证 。


时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
考察模拟递推、标记数组的使用以及排序算法。递推时需要判断计算出的数值是否为正且未出现过,注意数值范围不要溢出。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 10 浏览

讨论(0)