A46124.2024-12-GESP-C++-四级真题-编程题1-Recaman

普及-

GESP

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

小杨最近发现了有趣的 Recaman 数列, 这个数列是这样生成的:
\cdot 数列的第一项a1a_{1}是1;
\cdot 如果ak1ka_{k-1}-k是正整数并且没有在数列中出现过,那么数列的第k项aka_{k}ak1ka_{k-1}-k,否则为ak1+ka_{k-1}+k

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

输入格式

第一行,一个正整数n。

输出格式

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

输入输出样例

  • 输入#1

    5

    输出#1

    1 2 3 6 7
  • 输入#2

    8

    输出#2

    1 2 3 6 7 12 13 20

说明/提示

样例解释:
对于样例1,n=5:
a1=1\cdot a_{1}=1;
a12=1\cdot a_{1}-2=-1,不是正整数,因此a2=a1+2=3a_{2}=a_{1}+2=3;
a23=0\cdot a_{2}-3=0,不是正整数,因此a3=a2+3=6a_{3}=a_{2}+3=6;
a34=2\cdot a_{3}-4=2,是正整数,没有在数列中出现过,因此a4=2a_{4}=2;
a45=3\cdot a_{4}-5=-3,不是正整数,因此a5=a4+5=7a_{5}=a_{4}+5=7
a1,a2,a3,a4,a5a_{1},a_{2},a_{3},a_{4},a_{5}从小到大排序后的结果为1 2 3 6 7

数据范围:
对于所有数据点,保证1n30001\le n\le 3000

首页