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;
}
相关推荐
伟大的车尔尼3 天前
分治题目:数组中的第 K 个最大元素
分治
伟大的车尔尼6 天前
分治题目:所有可能的真二叉树
二叉树·分治
伟大的车尔尼7 天前
分治题目:不同的二叉搜索树 II
二叉树·二叉搜索树·分治
星马梦缘22 天前
算法设计导论 课堂笔记
算法·动态规划·分治·时间复杂度·最优二叉树
8Qi83 个月前
LeetCode 148. 排序链表 —— 解法一:自顶向下递归(分治 + 归并)
数据结构·算法·leetcode·链表·递归·分治·归并
浅念-4 个月前
分治算法专题|LeetCode高频经典题目详细题解
数据结构·c++·算法·leetcode·职场和发展·排序·分治
Q741_1474 个月前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
进击的荆棘5 个月前
优选算法——分治
数据结构·算法·leetcode·分治
We་ct5 个月前
LeetCode 53. 最大子数组和:两种高效解法(动态规划+分治)
前端·算法·leetcode·typescript·动态规划·分治
We་ct5 个月前
LeetCode 427. 建立四叉树:递归思想的经典应用
前端·算法·leetcode·typescript·dfs·深度优先遍历·分治