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;
}
相关推荐
Dream it possible!1 个月前
LeetCode 面试经典 150_分治_合并 K 个升序链表(108_23_C++_困难)
c++·leetcode·链表·面试·分治
不穿格子的程序员2 个月前
从零开始写算法——链表篇5:K个一组翻转链表 + 排序链表
算法·链表·分治
达不溜先生 ୧⍢⃝୨2 个月前
循环赛日程表问题
c语言·算法·递归·分治·循环赛日程表·动态二维数组
dragoooon342 个月前
[优选算法专题八.分治-归并 ——NO.46~48 归并排序 、数组中的逆序对、计算右侧小于当前元素的个数]
数据结构·算法·排序算法·分治
Q741_1473 个月前
C++ 分治 归并排序 归并排序VS快速排序 力扣 912. 排序数组 题解 每日一题
c++·算法·leetcode·归并排序·分治
Q741_1474 个月前
C++ 分治 快速选择算法 堆排序 TopK问题 力扣 215. 数组中的第K个最大元素 题解 每日一题
c++·算法·leetcode·分治·1024程序员节·topk问题·快速选择算法
进击的圆儿4 个月前
分治算法_快速排序专题总结-----分治
算法·排序算法·分治·快排·大根堆·小根堆
sxtyjty4 个月前
ABC426G - Range Knapsack Query
c++·算法·分治
少许极端4 个月前
算法奇妙屋(四)-归并分治
java·算法·排序算法·分治·归并