肝了3小时,即将破防
我的代码(测试都没过……)
#include <bits/stdc++.h>
using namespace std;
string a[20001];
string dfs(int n){
if (a[n] != "")
return a[n];
string bin = "";
while (n){
bin = char(n % 2 + '0') + bin;
n /= 2;
}
if (bin.size() == 0)
return "0";
string ans = "";
for (int i = 0; i < bin.size(); i++)
if (bin[i] == '1'){
ans = ans + "2(" + dfs(bin.size() - i - 1) + ")+";
}
ans = ans.substr(0, ans.size() - 1);
a[n] = ans;
return ans;
}
int main(){
a[1] = "2(0)";
a[2] = "2";
int n;
cin >> n;
cout << dfs(n);
return 0;
}