```
#include<iostream>
#include<bitset>
using namespace std;
int n;
string change(int x){
string s = "";
while(x){
s = char(x%2+'0') + s;
x /= 2;
}
return s;
}
void print(int x){
if(x != n){
putchar('2');
if(x == 1) return;
putchar('(');
if(x == 0){
putchar('0');
putchar(')');
return;
}
}
string s = change(x);
bool flag = false;
for(int i = 0;i < s.length();++i){
if(s[i] == '1'){
if(flag) putchar('+');
print(s.length()-1-i);
flag = true;
}
}
if(x != n) putchar(')');
}
int main(){
scanf("%d",&n);
print(n);
return 0;
}
```
by hnxxwpf @ 2024-02-08 10:47:36
@[120629q](/user/1272360)
```cpp
#include<bits/stdc++.h>
using namespace std;
void work(int n)
{
if(n>2)
{
int js=0,x=n;
while(x>=2)
{
js++;
x/=2;
}
if(js>1)
{
cout<<"2(";
work(js);
cout<<")";
}
else
{
cout<<2;
}
x=1;
for(int i=1;i<=js;i++)
{
x*=2;
}
if(n-x!=0)
{
cout<<'+';
work(n-x);
}
}
else if(n==1)
{
cout<<"2(0)";
return;
}
else
{
cout<<2;
}
}
int main()
{
int n;
cin>>n;
work(n);
return 0;
}//禁止抄袭
``````
by ycy1124 @ 2024-02-22 11:41:04