2的幂次方表示
题解
#include<bits/stdc++.h>
using namespace std;
void work(int a)
{
if(a==1){//对特殊情况的处理
cout << "2(0)";
return;
}
else if(a==2){
cout << "2";
return;
}else{
int cnt = 0, sum = 1;
while(1){
sum *= 2;
if (sum > a)
{
sum = sum / 2;
if (cnt == 1)//统计乘2的次数==1时直接输出2
{
cout << "2";
}
else
{
cout << "2(";
work(cnt);
cout << ")";
}
if (a - sum != 0)//判断是否有剩余
{
cout << "+";
work(a - sum);
}
return;
}
else
{
cnt++;
}
}
}
}
int main()
{
int n;
cin >> n;
work(n);
return 0;
}