问题描述
任何一个正整数都可以用2的幂次方表示。例如:
137=27+23+20
同时约定方次用括号来表示,即ab 可表示为a(b)。
由此可知,137可表示为:
2(7)+2(3)+2(0)
进一步:7= 22+2+20 (21用2表示)
3=2+20
所以最后137可表示为:
2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:
1315=210 +28 +25 +2+1
所以1315最后可表示为:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入格式
输入包含一个正整数N(N<=20000),为要求分解的整数。
输出格式
程序输出包含一行字符串,为符合约定的n的0,2表示(在表示中不能有空格)

分析:递归即可,注意递归边界是1,返回"1",最后输出的时候过滤掉即~

#include <iostream>
#include <vector>
using namespace std;
string dfs(int n) {if (n == 1) return "1";if (n == 0) return "0";string ans;vector<int> v;int cnt = 0;while (n) {if (n % 2 == 1) v.push_back(cnt);n /= 2;cnt++;}for (int i = v.size() - 1; i >= 0; i--) {ans += "2(" + dfs(v[i]) + ")";if (i != 0) ans += "+";}return ans;
}
int main() {int n;cin >> n;string ans = dfs(n);for (int i = 0; i < ans.size(); i++) {if (ans[i + 1] == '1') i += 3;cout << ans[i];}return 0;
}

蓝桥杯 ALGO-12 算法训练 幂方分解相关推荐

  1. 蓝桥杯试题 算法训练 幂方分解

    试题 算法训练 幂方分解 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab 可 ...

  2. [Java] 蓝桥杯ALGO-12 算法训练 幂方分解

    问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步 ...

  3. 蓝桥杯:试题 算法训练 Remember the A La Mode

    蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...

  4. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

  5. 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举

    资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...

  6. 蓝桥杯-黑色星期五(算法训练)

    题目描述: 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是"诸事不宜".请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是1 ...

  7. 蓝桥杯练习系统算法训练习题加答案java版本

    附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7 转载于:https://www.cnblo ...

  8. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式

    题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...

  9. 蓝桥杯练习系统—算法训练 s01串

    第一部分:题目 问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据 ...

最新文章

  1. 海思3531D上编译FFmpeg源码操作步骤
  2. 汇编中的length(返回利用dup定义的数组中的元素个数,即重复操作符dup前的count值)
  3. c++关联容器的成员函数find的一个例子
  4. 备战秋招——操作系统
  5. leetcode--113.路径总和 Ⅱ
  6. 年轻人也太禁不起诱惑了吧?
  7. python索引例子_Python实现带下标索引的遍历操作示例
  8. nsx很可爱的公众号 vSAN 文章合集
  9. html 滚动条处于页面底部,滚动条一直置于页面底部,开发聊天程序须知。
  10. 微服务升级_SpringCloud Alibaba工作笔记0025---Nacos持久化切换配置
  11. 如何让 PPT 像 PyeCharts 一样炫酷?
  12. Spring(十九)之异常处理
  13. 20181030函数2
  14. 在线答题java背景_答题功能java
  15. Android 最常用的设计模式一 安卓源码分析—单例模式singleInstance
  16. UI设计,扁平化还是拟物化?
  17. Unsupervised Keyphrase Extraction by Jointly Modeling Local and Global Context 阅读笔记
  18. @Value注解使用过程中遇到的一些坑
  19. 设计模式(三)策略模式——在Spring中使用策略模式
  20. 鸿蒙 华为watch gt3手表hello world

热门文章

  1. 果你的浏览器关闭了 java,weblogic之CVE-2018-3191漏洞分析
  2. ajax 跨域请求_什么是跨域问题?如何解决?
  3. 解决SSH项目乱码问题的环境配置方案
  4. 【重温基础】6.数字
  5. 关于最近Vue3+ Vue-CLI3+比较热门的十几篇文章
  6. 新物种!大数据安全工程研究中心告诉你什么叫“数据安全成熟度测评师”
  7. 如何用R来定制个性化PPT
  8. Python自动化开发学习的第九周----线程、进程、协程
  9. bash配置文件的修改
  10. NERDTree 快捷键辑录