记录编号 568205 评测结果 AAAAAAAAAA
题目名称 [NOIP 1998]幂次方 最终得分 100
用户昵称 Gravatarlihaoze 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2021-12-19 11:03:53 内存使用 0.00 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define FILE(x)                    \
    freopen(#x ".in", "r", stdin); \
    freopen(#x ".out", "w", stdout)
#define LOOP(i, a, b) for (int i = a; i < (int)b; i++)
#define _LOOP(i, a, b) for (int i = a; i <= (int)b; i++)
#define MEM(a, b) memset((a), (b), sizeof(a))
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

int getint() {
    int temp;
    cin >> temp;
    return temp;
}

string getstring() {
    string temp;
    cin >> temp;
    return temp;
}

string solve(int n) {
    string str;
    int cnt = 0;
    stack<int> nums;
    while (n) {
        if (n & 1) nums.push(cnt);
        n >>= 1;
        cnt++;
    }
    while (!nums.empty()) {
        if (nums.top() == 0) {
            str += "2(0)+";
            nums.pop();
            break;
        }
        if (nums.top() == 1) {
            str += "2+";
            nums.pop();
            continue;
        }
        str += "2(" + solve(nums.top()) + ")+";
        nums.pop();
    }
    if (str.back() == '+') str.pop_back();
    return str;
}

int main() {
    ios::sync_with_stdio(false);
#ifdef DEBUG
    FILE(test);
#endif
    FILE(mi);
    int n;
    cin >> n;
    cout << solve(n) << endl;
    return 0;
}