C0408 Recamán
Recamán
题目描述
小杨最近发现了有趣的 Recamán 数列,这个数列是这样生成的:
数列的第一项 a1是 1;
如果 ak-1-k 是正整数并且没有在数列中出现过,那么数列的第 k项ak 为ak-1-k ,否则为 ak-1+k
小杨想知道 Recamán 数列的前 n项从小到大排序后的结果。手动计算非常困难,小杨希望你能帮他解决这个问题。
输入格式
第一行,一个正整数n 。
输出格式
一行,n 个空格分隔的整数,表示 Recamán 数列的前 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
- a1 - 2 = -1(不是正整数),因此 a2 = a1 + 2 = 3
- a2 - 3 = 0(不是正整数),因此 a3 = a2 + 3 = 6
- a3 - 4 = 2(是正整数且未出现过),因此 a4 = a3-4 = 2
- a4 - 5 = -3(不是正整数),因此 a5 = a4 + 5 = 7
a1,a2,a3,a4,a5从小到大排序后的结果为1 2 3 6 7
数据范围
对于所有数据点,保证1≤n≤3000。