[保研/考研机试] KY103 2的幂次方 上海交通大学复试上机题 C++实现
题目链接:
KY103 2的幂次方
https://www.nowcoder.com/share/jump/437195121691999575955
描述
Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。 Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0). Given a positive number n,your task is to present n with the exponential form which only contains the digits 0 and 2.
输入描述:
For each case, the input file contains a positive integer n (n<=20000).
输出描述:
For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.
中文描述:
每个正数都可以用指数形式表示。例如,137 = 2^7 + 2^3 + 2^0。我们用a(b)的形式表示a^b。那么137可以用2(7)表示 +2(3)+2(0)。 由于 7 = 2^2 + 2 + 2^0 和 3 = 2 + 2^0 ,因此 137 最终由 2(2(2)+2 +2(0))+2(2+2(0)) 表示 +2(0)。 给定一个正数 n,你的任务是将 n 以仅包含数字 0 和 2 的指数形式呈现。
输入描述:
对于每种情况,输入文件都包含一个正整数 n (n<=20000)。
输出描述:
对于每种情况,您应该在一行中输出 n 的指数形式。请注意,该行中不应有任何额外的空格。
示例1
输入:
1315
输出:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
思路:
-
首先,定义一个递归函数 powTwo,将数字 n 转换为二进制形式,其中只有 0 和 1。
-
在递归函数中,处理二进制数,如果某一位为 1,则根据指数规则,将其转换为对应的 2(a) 形式。
-
注意处理特殊情况,例如 2^1 直接表示为 "+2",其他情况通过递归处理更高次幂。
-
最后,去掉字符串开头的 "+" 符号,即为所求的指数形式表示。
-
在 main 函数中,读入输入的正整数 n,并调用递归函数 powTwo 输出结果。
源代码:
#include <iostream>
#include <vector>
using namespace std;// 定义递归函数,将数字 n 转换为指数形式
string powTwo(int n) {if (n == 0) {return "0";}if (n == 2) {return "2";}vector<int> nums;while (n != 0) {nums.push_back(n % 2); // 将 n 转换为二进制n /= 2;}string res = "";for (int i = nums.size() - 1; i >= 0; i--) {if (nums[i] == 1) {if (i == 1) {res += "+2"; // 如果是 2^1,直接添加 "+2"}else {res += "+2(" + powTwo(i) + ")"; // 否则递归处理更高次幂}}}res.erase(0, 1); // 去掉最前面的 "+"return res;
}int main() {int n;while (cin >> n) {cout << powTwo(n) << endl;}return 0;
}
提交结果:

相关文章:
[保研/考研机试] KY103 2的幂次方 上海交通大学复试上机题 C++实现
题目链接: KY103 2的幂次方 https://www.nowcoder.com/share/jump/437195121691999575955 描述 Every positive number can be presented by the exponential form.For example, 137 2^7 2^3 2^0。 Lets present a^b by the form a(b).Then 137 is present…...
时序预测 | MATLAB实现基于BP神经网络的时间序列预测-递归预测未来(多指标评价)
时序预测 | MATLAB实现基于BP神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于BP神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现BP神经网络时间序列预测未来(完整…...
组合模式(C++)
定义 将对象组合成树形结构以表示部分-整体’的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。 应用场景 在软件在某些情况下,客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化…...
git上传问题记录
unable to access ‘https://github.com/songjiahao-wq/untitled.git/’: Failed to connect to github.com port 443 after 21086 ms: Couldn’t connect to serve 解决办法:修改 Git 的网络设置 打开git Bash运行,clash代理一般是下面的端口 # 注意…...
通过动态IP解决网络数据采集问题
动态地址的作用 说到Python网络爬虫,很多人都会遇到困难。最常见的就是爬取过程中IP地址被屏蔽。虽然大部分都是几个小时内自动解封的,但这对于分秒必争的python网络爬虫来说,是一个关键性的打击!当一个爬虫被阻塞时,…...
可重入锁,不可重入锁,死锁的多种情况,以及产生的原因,如何解决,synchronized采用的锁策略(渣女圣经)自适应的底层,锁清除,锁粗化,CAS的部分应用
一、💛 锁策略——接上一篇 6.分为可重入锁,不可重入锁 如果一个线程,针对一把锁,连续加锁两次,会出现死锁,就是不可重入锁,不会出现死锁,就是可重入锁。 如果一个线程,针…...
JSON.parse()和JSON.stringify()用法
JSON.parse() 方法用于将 JSON 格式的字符串转换为 JavaScript 对象,而 JSON.stringify() 方法用于将 JavaScript 对象转换为 JSON 字符串。这两个方法可以组合使用来实现将数据从对象到字符串再到对象的转换。 示例 // 创建一个包含属性的 JavaScript 对象 var pe…...
Android 并发编程--阻塞队列和线程池
一、阻塞队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作…...
Playwright快速上手-1
前言 随着近年来对UI自动化测试的要求越来越高,,功能强大的测试框架也不断的涌现。本系列主讲的Playwright作为一款新兴的端到端测试框架,凭借其独特优势,正在逐渐成为测试工程师的热门选择。 本系列文章将着重通过示例讲解 Playwright python开发环境的搭建 …...
PPT颜色又丑又乱怎么办?
一、设计一套PPT时,可以从这5个方面进行设计 二、PPT颜色 (一)、PPT常用颜色分类 一个ppt需要主色、辅助色、字体色、背景色即可。 (二)、搭建PPT色彩系统 设计ppt时,根据如下几个步骤,依次选…...
python计算相关系数R
方法一: import numpy as np# 计算相关系数R def r(y_true, y_pred):y_true np.array(y_true)y_pred np.array(y_pred)corr np.corrcoef(y_true, y_pred)[0][1]return corrcorr r(yture, ypred)方法二 import scipy.stats # 计算皮尔逊相关指数,并…...
黑马项目一阶段面试 自我介绍篇
面试官你好,我叫xxx,是来自xxxx的本科毕业生。我通过招聘网站/内推/线下招聘了解到的贵司,我具有扎实的Java后端的基础功底,基本掌握JavaSE、JavaEE流行技术的使用,并且我比较好学,心态也很乐观积极&#x…...
时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测
时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测 目录 时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention时间序列预测,CNN-BiGRU-Attention结合注意力机制时…...
开发过程中遇到的问题以及解决方法
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 开发过程中遇到的问题以及解决方法 简单易用的git命令 git命令: 查看有几个分支:git branch -a 切换分支&#…...
本地oracle登录账号锁定处理,the account is locked
1.打开cmd命令窗口 2.打开sqlplus: sqlplus /nolog(加/nolog是不登录服务器的意思,不加就需要输账号密码) 3.切换到管理员:conn / as sysdba; 第2步第3步可以合并,直接使用sysdba登录:sqlplus / as sysdba; 4.解锁账号&#x…...
redission自定义hessian序列化
一。技术改造背景 由于之前的比较陈旧的技术,后面发起了技术改造,redis整体改后使用redisson框架。 二。问题 改造完成后,使用方反馈 缓存获取异常 异常信息如下 Caused by: java.io.CharConversionException: Unexpected EOF in the mid…...
P8642 [蓝桥杯 2016 国 AC] 路径之谜
[蓝桥杯 2016 国 AC] 路径之谜 题目描述 小明冒充 X X X 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n n n\times n nn 个方格。如图所示。 按习俗,骑士要从西北角走到东南角。 …...
oracle sql developer批量删除某个用户
随着navicate收费,还得破解,pl/sql developer配置麻烦,最近使用oracle sql developer来试试oracle的操作如何; 用着还行,没有卡顿现象, 最近要oracle sql developer批量删除某个用户下所有的表࿰…...
k8s 滚动更新控制(一)
在传统的应用升级时,通常采用的方式是先停止服务,然后升级部署,最后将新应用启动。这个过程面临一个问题,就是在某段时间内,服务是不可用的,对于用户来说是非常不友好的。而kubernetes滚动更新,…...
Java智慧工地APP源码带AI识别
智慧工地为建筑全生命周期赋能,用创新的可视化与智能化方法,降低成本,创造价值。 一、智慧工地APP概述 智慧工地”立足于互联网,采用云计算,大数据和物联网等技术手段,针对当前建筑行业的特点,…...
从人耳听觉到AI:为什么MFCC仍是语音识别的黄金标准?
从人耳听觉到AI:为什么MFCC仍是语音识别的黄金标准? 想象一下,当你走进一个嘈杂的咖啡馆,背景音乐、咖啡机轰鸣、人群交谈声此起彼伏,但你依然能清晰地分辨出朋友对你说的话。这种神奇的听觉能力,正是人类进…...
OpenClaw飞书机器人配置:SecGPT-14B安全警报实时推送
OpenClaw飞书机器人配置:SecGPT-14B安全警报实时推送 1. 为什么需要安全警报实时推送? 上周三凌晨3点,我的个人服务器突然收到异常登录告警。当我早上看到邮件时,攻击者早已完成数据窃取并抹除了痕迹。这次事件让我意识到&#…...
Qt键盘控制按钮实战:用WASD键玩转UI交互(附完整代码)
Qt键盘控制按钮实战:用WASD键玩转UI交互(附完整代码) 想象一下,当你正在开发一款自助点餐系统时,突然发现触摸屏失灵了——这种场景下,键盘控制的UI交互能力就成了救命稻草。Qt框架提供的键盘事件处理机制&…...
字符串拼接用“+”还是 StringBuilder?别再凭感觉写了嘏
前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...
智能匹配技术:重新定义Illustrator设计效率提升新范式
智能匹配技术:重新定义Illustrator设计效率提升新范式 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 一、行业困境分析:设计师如何摆脱机械劳动的桎梏&…...
Kaggle竞赛风向标:如何用地震数据集(如尼泊尔建筑数据)构建你的第一个灾害预测模型?
Kaggle竞赛实战:从地震数据到建筑损毁预测的完整机器学习流程 去年在尼泊尔参与灾后重建调研时,当地工程师递给我一份发皱的纸质表格——那是2015年大地震后他们手工录入的建筑评估记录。表格上"屋顶坍塌"、"地基移位"等潦草笔记背后…...
VMware Workstation 16 中 Windows Server 2019 数据中心版安装与优化指南
1. VMware Workstation 16 环境准备 在开始安装 Windows Server 2019 数据中心版之前,我们需要先准备好 VMware Workstation 16 的环境。我建议大家在安装前检查下自己的电脑配置,毕竟跑虚拟机还是挺吃资源的。我的经验是,至少要有 16GB 内存…...
FasterRCNN训练完别急着关!用predict.py批量预测并保存结果的完整配置指南
FasterRCNN模型预测实战:从批量推理到结果保存的全流程解析 当你终于完成FasterRCNN模型漫长的训练过程,看着损失曲线平稳下降,验证集指标达到预期,那种成就感不言而喻。但很多开发者在这里犯了一个常见错误——直接关闭项目转向下…...
超越wx.uploadFile!小程序多图上传终极方案:自定义FormData+后端接收详解
小程序多图上传实战:从FormData封装到企业级解决方案 在小程序开发中,文件上传是常见的业务场景,但原生wx.uploadFile接口在复杂需求面前往往力不从心。当我们需要批量上传、进度监控、自定义请求头时,一套完整的自定义上传方案就…...
双非逆袭!25年兰大计算机专硕上岸率超84%,我的跨考保姆级攻略(含806专业课避坑指南)
双非逆袭!25年兰大计算机专硕上岸率超84%,我的跨考保姆级攻略(含806专业课避坑指南) 作为一名本科双非院校的跨考生,我在2025年成功上岸兰州大学计算机专硕。这一年,兰大计算机专硕的一志愿上岸率高达84.1%…...
