排序集合

Grade 0 Open Time Thursday, 21 February 2013, 11:02 pm
Discount 0.8 Time Discount Thursday, 28 February 2013, 11:02 pm
Allow late Yes Close Time Thursday, 28 February 2013, 11:02 pm
Input file sort.in Output file sort.out

题目描述


对于集合 N={1 , 2 ,…, n} 的子集,定义一个称之为“小于”的关系:

设 S 1 ={X 1 , X 2 ,…, X i } , (x 1 <x 2 < … <X i ) ,

   S 2 ={Y 1 , Y 2 ,…, Y j } , (Y 1 <Y 2 < … <Y i ) ,

如果存在一个 k , (O ≤ k ≤ min{i , j)) ,使得 X 1 =Y 1 ,…, X k =Y k ,且 k=i 或 X (k+1) <Y (k+1) ,则称 S 1 “小于” S 2 。

你的任务是,对于任意的 n(n ≤ 31) 及 k(k<2^n ) ,求出第 k 小的子集。

【输入】

输入文件仅一行,包含两个用空格隔开的自然数, n 和 k 。

【输出】

输出文件仅一行,是该子集的元素,由小到大排列。空集输出 0 。

【样例】

sort.in

3 4

sort.out

1 2 3