提交时间:2024-08-20 14:30:23
运行 ID: 168900
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <string> #include <climits> #include <cstdio> #include <queue> #include <stack> #include <map> #include <set> #include <set> #include <algorithm> using namespace std; int myPow(int base, int mode) { int res = 1; while (mode) { if (mode & 1) res *= base; base *= base; mode >>= 1; } return res; } void solve(int n) { if (!n) return; int mode; for (int i = 0; i <= 15; ++i) { mode = i; if (myPow(2, mode) > n) { --mode; break; } } if (mode == 0) cout << "2(0)"; else if (mode == 1) cout << 2; else { cout << "2("; solve(mode); cout << ")"; } if (n != myPow(2, mode)) { cout << "+"; solve(n - myPow(2, mode)); } } int main() { std::ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; solve(n); return 0; }