这道题,我想的太复杂了。= =
我定义的数组存放的是输入数的二进制,但是更好的方法是定义一个数组存放转换成二进制后1的所在位置。
这样就简单了吗。
#include <iostream>
using namespace std;
int main(){
void handle(int n);
int n;
cin>>n;
handle(n);
cout<<endl;
return 0;
}
void handle(int n){
int num[101];
int i=0,j=0;
while(n){
int temp;
temp=n%2;
if(temp==1){
num[j]=i;
j++;
}
i++;
n=n/2;
}
for(i=j-1;i>=0;i--){
if(num[i]==0)
cout<<"2(0)";
else if(num[i]==1)
cout<<"2";
else if(num[i]==2)
cout<<"2(2)";
else{
cout<<"2(";
handle(num[i]);
cout<<")";
}
if(i!=0)
cout<<"+";
}
}
原文:http://blog.csdn.net/sunshumin/article/details/44570469