#include<bits/stdc++.h>
using namespace std;
string DivideNum(int num) {
if (num == 0) return "0";
if (num == 1) return "2";
int i = 0;
string ans = { 0 };
while (num) {
if (num & 1) {
string temp = DivideNum(i);
if (!temp.compare("0"))
ans = "+2(0)" + ans;
else if (!temp.compare("2"))
ans = "+2" + ans;
else
ans = "+2(" + temp + ")" + ans;
}
num >>= 1;
i++;
}
ans.erase(ans.begin());
return ans;
}
int main() {
int n;
cin >> n;
string temp = DivideNum(n);
cout << temp;
return 0;
}
试过用洛谷的IDE跑了一下,发现把乱码的部分去掉,答案是对的,调试了一下发现其中多出了\0,试了好多方法也解决不了。改了一天着实把我整麻了。。。