3483. 2的幂次方(上海交通大学考研机试题)

3483. 2的幂次方

⭐️难度:中等

⭐️类型:分治

📖题目:题目链接

📚题解:

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
string Get2sExponet(int n) {
    if (n == 0) {
        return "0";
    }
    vector<int> exp;
    for (int i = 15; i >= 0; --i) {
        if ((n & (1 << i)) != 0) {
            exp.push_back(i);
        }
    }
    // n = 2^(exp[0]) + 2^(exp[1]) + ... + 2^(exp[size-1])
    string res = "";
    for (int i = 0; i < exp.size(); ++i) {
        if (i != 0) {
            res += "+";
        }
        if (exp[i] == 1) {
            res += "2";
        }
        else {
            res += "2(" + Get2sExponet(exp[i]) + ")";
        }
    }
    return res;
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        printf("%s\n", Get2sExponet(n).c_str());
    }
    return 0;
}
相关推荐
We་ct3 天前
LeetCode 53. 最大子数组和:两种高效解法(动态规划+分治)
前端·算法·leetcode·typescript·动态规划·分治
We་ct5 天前
LeetCode 427. 建立四叉树:递归思想的经典应用
前端·算法·leetcode·typescript·dfs·深度优先遍历·分治
识君啊7 天前
拆分与合并的艺术·分治思想:Java归并排序深度解析
java·数据结构·算法·排序算法·归并排序·分治
Tisfy1 个月前
LeetCode 761.特殊的二进制字符串:分治(左右括号对移动)
算法·leetcode·字符串·递归·分治
_OP_CHEN1 个月前
【算法提高篇】(五)线段树 + 分治:解锁区间问题的终极思路,从最大子段和到复杂序列操作
数据结构·算法·蓝桥杯·线段树·c/c++·分治·acm/icpc
码农幻想梦1 个月前
3483. 2的幂次方(上海交通大学考研机试题目)
递归·分治
Dream it possible!3 个月前
LeetCode 面试经典 150_分治_合并 K 个升序链表(108_23_C++_困难)
c++·leetcode·链表·面试·分治
不穿格子的程序员3 个月前
从零开始写算法——链表篇5:K个一组翻转链表 + 排序链表
算法·链表·分治
达不溜先生 ୧⍢⃝୨4 个月前
循环赛日程表问题
c语言·算法·递归·分治·循环赛日程表·动态二维数组