1. 程式人生 > >問題 H: 二的冪次方

問題 H: 二的冪次方

題目描述

任何一個正整數都可以用2的冪次方表示。

例如:

            137=27+23+20

同時約定次方用括號來表示,即ab 可表示為a(b)。

由此可知,137可表示為:

            2(7)+2(3)+2(0)

進一步:7= 22+2+20(21用2表示)

            3=2+20  

所以最後137可表示為:

            2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

            1315=210 +28 +25 +2+1

所以1315最後可表示為:

            2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

輸入

每個測試檔案只包含一組測試資料,每組輸入一個正整數n(n<=20000)。  

輸出

對於每組輸入資料,輸出符合約定的n的0,2表示。(在表示中不能有空格)  

樣例輸入

137

樣例輸出

2(2(2)+2+2(0))+2(2+2(0))+2(0)

提示

知道什麼是遞迴麼

#include <iostream> #include<cstdio> using namespace std;

void CXW(int z);

int main() {     int z;     while(cin >>z)     {         CXW (z);         cout << endl;     }     return 0; }

void CXW (int z) {     if (z==1)     {         cout << "2(0)";         return;     }     if (z==2)     {         cout << "2";         return;     }     int x=1,c=0;     while (x<=z)     {         x*=2;         c++;     }

    if (z==x/2)     {         cout << "2(";         CXW(c-1);         cout << ")";     }     else     {         if (x/2==2)         {             cout<<"2";             cout<<"+";             CXW(1);         }         else         {             cout<<"2(";             CXW(c-1);             cout << ")+";             CXW(z-x/2);         }     } }