记录编号 |
568205 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 1998]幂次方 |
最终得分 |
100 |
用户昵称 |
lihaoze |
是否通过 |
通过 |
代码语言 |
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;
}