#6719. 二进制管理员
二进制管理员
二进制管理员
题目描述
在某个数据管理系统中,每一个数据节点都有一个编号。
系统规定:
一个节点负责管理的数据数量,取决于它编号的二进制表示中最低位的 1 所代表的数值。
对于一个正整数 x,定义:
其中:
&表示按位与运算;-x表示 x 的补码形式。
例如:
节点编号:
12
它的二进制表示为:
1100
其中最低位的 1 为:
0100
对应的数值为:
4
因此:
节点 12 可以管理的数据数量为:
4
现在系统需要进一步分析该节点负责的数据。
请你完成以下任务:
- 计算节点编号
x所管理的数据数量k; - 找出
k的所有因数; - 将所有因数按照从大到小的顺序输出。
例如:
输入:
12
计算得到:
k = 4
4 的所有因数为:
1 2 4
按照从大到小排序后:
4 2 1
输入格式
输入一个整数:
x
表示节点编号。
输出格式
第一行输出:
k
表示该节点管理的数据数量。
第二行输出:
k 的所有因数,按照从大到小排列。
相邻数字之间使用一个空格隔开。
输入范围
1 ≤ x ≤ 10^9
保证 x 为正整数。
输入样例
12
输出样例
4
4 2 1
样例解释
节点编号:
12
二进制:
1100
最低位的 1:
0100
所以:
k = 4
4 的因数:
1 2 4
按照从大到小输出:
4 2 1
相关
在以下作业中: