#6629. 稳定结点(3.1)
稳定结点(3.1)
题目:稳定结点
题目描述
在一个编号系统中,每个正整数都有一个“最小波动值”。
对于一个正整数 (x),它的最小波动值定义为:
所有能够整除 (x) 的 (2) 的非负整数次幂中,最大的那个数。
例如:
- (12) 能被 (1,2,4) 整除,但不能被 (8) 整除,所以 (12) 的最小波动值是 (4);
- (10) 能被 (1,2) 整除,但不能被 (4) 整除,所以 (10) 的最小波动值是 (2);
- (7) 只能被 (1) 整除,所以 (7) 的最小波动值是 (1)。
现在给定一个正整数 (n),系统会进行若干次调整。
每次调整时,若当前编号为 (x),则系统会将编号变为:
其中 (d) 是当前编号 (x) 的最小波动值。
当编号变为 (0) 时,调整结束。
请你输出整个调整过程中出现过的所有编号,并按从小到大的顺序输出。
输入格式
输入一个正整数 (n)。
输出格式
输出若干个整数,表示整个调整过程中出现过的所有编号。
要求按从小到大的顺序输出,相邻两个整数之间用一个空格隔开。
输入样例 1
12
输出样例 1
0 8 12
样例解释 1
初始编号为 (12)。
(12) 的最小波动值为 (4),所以:
(8) 的最小波动值为 (8),所以:
过程中出现过的编号为:
按从小到大排序后输出:
0 8 12
输入样例 2
15
输出样例 2
0 8 12 14 15
样例解释 2
调整过程为:
$15 \rightarrow 14 \rightarrow 12 \rightarrow 8 \rightarrow 0$
过程中出现过的编号按从小到大排序后为:
输入样例 3
10
输出样例 3
0 8 10
数据范围
说明
输出结果末尾是否带有空格不影响答案正确性。