3036. 按数据中1的位数排序

单点时限: 2.0 sec

内存限制: 256 MB

所有数据在内存中都是以二进制形式存放的,其中有一些位是 ,而另一些位是

例如,整数 的二进制表示为 ,其中 的位数是 ;整数 的二进制表示为 ,其中 的位数是 ;整数 位二进制表示为 ,其中 的位数是

现在有 个整数,要求按照 位二进制补码表示中 的位数从大到小进行排序。若两个数的二进制表示中 的位数相同,则按照数本身值由小到大排序。

例如:数 排序后的结果为 :

输入格式

行:整数 () 为问题数

行:第一个问题中的 ()

行: 个待排序的数 (),每两个数之间由一个空格分隔。

~ 行:后面问题的数据,格式与第一个问题相同。

输出格式

对于每个问题,输出一行问题的编号( 开始编号,格式:case #0: 等),然后在一行中输出排序后的数。格式为:以一个空格分隔每两个数。

样例

Input
3
1
1234
5
100 15 0 30 7
10
1 1 3 4 5 6 -7 -8 1234567 10000000
Output
case #0:
1234
case #1:
15 30 7 100 0
case #2:
-7 -8 1234567 10000000 3 5 6 1 1 4

472 人解决,779 人已尝试。

789 份提交通过,共有 4110 份提交。

3.0 EMB 奖励。

创建: 5 年,8 月前.

修改: 1 年,5 月前.

最后提交: 2 天,8 小时前.

来源: 2014年编程实践课程第三次上机考试