hdu 2184

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2184

题意:中文。。。就是递归了。

代码:

 1 # include <stdio.h>
 2 
 3 
 4 int n ;
 5 long long m ;
 6 
 7 
 8 int pil[3][70] ;
 9 
10 
11 void gao(int a[], int b[], int c[])
12 {
13     long long mid = (1LL << (n-1)) ;
14     if (n == 0) return ;
15     if (m >= mid)
16     {
17         c[++c[0]] = n-- ;
18         m -= mid ;
19         gao(b,a,c) ;
20     }
21     else
22     {
23         a[++a[0]] = n-- ;
24         gao(a,c,b) ;
25     }
26 }
27 
28 
29 void Print()
30 {
31     int i, j ;
32     for (i = 0 ; i < 3 ; i ++)
33     {
34         printf ("%d", pil[i][0]) ;
35         for (j = 1 ; j <= pil[i][0] ; j++)
36             printf (" %d", pil[i][j]) ;
37         printf ("\n") ;
38     }
39 }
40 
41 
42 int main ()
43 {
44     int T ;
45     scanf ("%d", &T) ;
46     while (T--)
47     {
48         scanf ("%d %I64d", &n, &m) ;
49         pil[0][0] = pil[1][0] = pil[2][0] = 0 ;
50         gao(pil[0], pil[1], pil[2]) ;
51         Print() ;
52     }
53     return 0 ;
54 }
posted @ 2012-05-03 03:35  Seraph2012  阅读(187)  评论(0编辑  收藏  举报