時間限制: 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表示(在表示中不能有空格)
1371315
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可表示...