#6620. 编号扩散路径
编号扩散路径
编号扩散路径
题目描述
对于任意正整数 (x),定义函数 (F(x)) 满足:
- (F(x)) 是
2的整数次幂; - (F(x)) 能够整除 (x);
- 在满足上述条件的所有整数中,(F(x)) 的值最大。
例如:
因为:
其中 (4=2^2),是能够整除 12 的最大的 2 的整数次幂。
某信息系统中共有 (n) 个编号,编号依次为:
1,2,3,……,n
系统从编号 (x) 开始传播一条更新信息。
设当前编号为 (p),信息传播到下一个编号的规则为: 系统会不断按照上述规则传播,直到得到的下一个编号大于 (n) 为止。
给定编号总数 (n) 和起始编号 (x),请按照传播顺序输出所有能够接收到更新信息的编号。
输入格式
输入两个正整数:
n x
其中:
- (n) 表示编号总数;
- (x) 表示传播的起始编号。
输出格式
在一行中,按照传播顺序输出所有接收到更新信息的编号。
相邻两个编号之间用一个空格分隔。
不需要输出第一个大于 (n) 的编号。
数据范围
对于所有测试数据:
1 ≤ x ≤ n ≤ 10^9
样例输入 1
16 5
样例输出 1
5 6 8 16
样例解释
初始编号为: 5
能够整除 5 的最大的 2 的整数次幂为:
F(5)=1
因此下一个编号为:
5+1=6
当前编号变为 6。
因为: F(6)=2 所以下一个编号为:
当前编号变为 8。
因为:
所以下一个编号为:
当前编号变为 16。
因为: 所以下一个编号为: 但: 已经超出编号范围,因此传播结束。
完整传播路径为:
5 → 6 → 8 → 16
所以输出:
5 6 8 16
样例输入 2
10 7
样例输出 2
7 8
样例解释
对于 7:
因此:
对于 8:
F(8)=8
因此:
由于:
传播结束。
所以输出:
7 8
相关
在以下作业中: