#6619. 编号回溯路径
编号回溯路径
编号回溯路径
题目描述
对于任意正整数 (x),定义函数 (F(x)) 满足:
- (F(x)) 是
2的整数次幂; - (F(x)) 能够整除 (x);
- 在满足上述条件的所有整数中,(F(x)) 的值最大。
例如:
因为:
其中 (4=2^2),是能够整除 12 的最大的 2 的整数次幂。
某信息系统使用一条特殊规则,从当前编号不断向编号 0 回溯。
设当前编号为 (p),一次回溯后得到的新编号为:
系统会反复执行上述操作,直到当前编号变为 0。
给定初始编号 (x),请按照访问顺序输出整个回溯过程中出现的所有编号,包括初始编号 (x) 和最终编号 0。
输入格式
输入一个正整数:
x
表示初始编号。
输出格式
在一行中按照访问顺序输出所有编号。
相邻两个编号之间用一个空格分隔,并且最后一个输出的编号必须是:
0
数据范围
对于所有测试数据:
1 ≤ x ≤ 10^9
样例输入 1
13
样例输出 1
13 12 8 0
样例解释
初始编号为:
能够整除 13 的最大的 2 的整数次幂是:
所以第一次回溯后:
此时当前编号变为 12。
对于 12:
所以第二次回溯后:
此时当前编号变为 8。
对于 8:
所以第三次回溯后:
到达编号 0,回溯结束。
因此完整路径为:
13 → 12 → 8 → 0
输出:
13 12 8 0
样例输入 2
20
样例输出 2
20 16 0
样例解释
对于 20:
因此:
对于 16:
因此:
完整路径为:
20 → 16 → 0
相关
在以下作业中: