Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
168900 | 王梓阳 | 幂次方 | C++ | 输出超限 | 57 | 0 MS | 272 KB | 1070 | 2024-08-20 14:30:23 |
#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; }