P1010-의 힘

1 #INCLUDE <. 비트 / stdc ++ H>
 2  사용  스페이스 성병;
3  #DEFINE _for는 (ⅰ, A는 B)에 대한 (; 나는 B <I가 ++ I = (a) INT)
 4  
5  문자열 F ( INT의 b)
 (6)  {
 도 7      의 경우 (b의 == 1 )
 8          복귀  " 1 " ;
(9)      그 밖의  경우 (b의 == 0 )
 10          리턴  " 0 " ;
11  
12      스트링 BI;
13 일      동안 (b)
 14      {
15          의 경우 (b 및 0x1로 )
 16              바이 + = ' 1 ' ;
17          다른 BI + = ' 0 ' ;
18          B >> = 1 ;
19      }
 20      
21      스트링 RNT;
22      INT의 N = bi.size ();
23      리버스 (bi.begin () bi.end ());
24      _for (I, 0 , N)
 25      {
 26 일          경우 (BI [I] == ' 1 ' )
 27          {
28              RNT + = " 2 ( " ;
 29              RNT + = F (NI- 1 )
 30              RNT + = ' ) ' ;
(31)          }
 (32)          의 경우 (! I = N- 1 )
 33              RNT + = ' + ' ;
34      }
 35      
36      복귀 RNT;
37  }
 38  
39  공극 워시 ( 문자열RNT)
 40  {
 41      _for (I, 0, rnt.size ())
 42      {
 43          의 경우 (RNT [I] == ' ( ' && RNT [난 + 1 ] == ' 1 ' )
 44              rnt.erase (난 -, 3 ),
 (45)          의 경우 (RNT [I ] == ' + ' && (RNT [I + 1 ] == ' + ' || RNT [내가 + 1 ] == ' ) ' ))
 46              rnt.erase (난 ..., 1 );
(47)      }
 (48)      의 경우 (RNT [rnt.size () - 1 ] ==' + ' )
 49          rnt.erase (rnt.size () - 1 , 1 );
50  }
 51  
52  INT 주 ()
 53  {
 54      INT a 및
55      는 scanf ( " %의 D " , & A );
56      문자열 RNT = F (a);
(57)      세정 (RNT);
58      COUT << RNT << ENDL;
59      반환  0 ;
60 }

 

추천

출처www.cnblogs.com/Asurudo/p/11258086.html