递归练习
2:2的幂次方表示
总时间限制:
1000ms
内存限制:
65536kB
描述
由此可知,137可表示为:
2(7)+2(3)+2(0)
所以最后137可表示为:
2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:
1315=210+28+2^5+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>
using namespace std;
int GetBit(int n,int i){
return (n>>i)&1;
}
void Print(int n){
int first=1;
for(int i=15;i>=0;--i){
if(GetBit(n,i)){
if(!first){
cout<<"+";
}else{
first=0;
}
if(i==0){
cout<<"2(0)";
}
else if(i==1){
cout<<"2";
}
else {
cout<<"2(";
Print(i);
cout<<")";
}
}
}
}
int main(){
int n;
cin>>n;
Print(n);
return 0;
}
网友评论