中石油 2的冪次方 power

2022-10-11 16:54:14 字數 1377 閱讀 1644

時間限制: 1 sec  記憶體限制: 64 mb

提交: 38  解決: 19

[提交][狀態][討論版]

任何乙個正整數都可以用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≤20000)

輸出:符合約定的n的0,2表示(在表示中不能有空格)

137

1315

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

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

解題思路:題目要求輸入乙個數,然後輸出相應的格式,首先要把乙個數轉變成二進位制表示,存到乙個字元型陣列裡,然後從左往右依次判斷,如果其指數大於等於2,則輸出'('之後,在遞迴呼叫本身,然後輸出')',此時要注意判斷後面是否還有數,如果有,要輸出')+'.

做的時候要注意那幾種情況,分情況討論。

**:

#include #include 

#include

#include

using

namespace

std;

//判斷c後面是否還有1,有則需要再輸出+號。

bool pd(int c,char

a) }

return

false;}

void zhuanerjinzhi(int n,char

a)

for(int j=0;j)

a[i]='\0'

;}void f(int

n)else

}if(b==1&&(a[i+1]-'

0')==0

)

if(b==1&&(a[i+1]-'

0')!=0

)

if(b==0

) }

}}int

main()

return0;

}

2的冪次方

2的冪次方 noip1998 問題描述 任何乙個正整數都可以用2的冪次方表示。例如 137 2 7 2 3 2 0 同時約定方次用括號來表示,即ab可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 2 2 2 2 0 21用2表示 3 2 2 0 所以最後137可表示為 ...

2的冪次方表示

題目 任何乙個正整數都可以用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 ...

2的冪次方(遞迴)

任何乙個正整數都可以用22的冪次方表示。例如137 27 23 2 0 同時約定方次用括號來表示,即a b 可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 2 7 2 3 2 0 進一步 7 22 2 207 22 2 20 2 1用2表示 並且3 2 2 0 所以最後137可表示...