[保研/考研机试] KY103 2的幂次方 上海交通大学复试上机题 C++实现

题目链接:

KY103 2的幂次方 icon-default.png?t=N6B9https://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)

思路:

  1. 首先,定义一个递归函数 powTwo,将数字 n 转换为二进制形式,其中只有 0 和 1。

  2. 在递归函数中,处理二进制数,如果某一位为 1,则根据指数规则,将其转换为对应的 2(a) 形式。

  3. 注意处理特殊情况,例如 2^1 直接表示为 "+2",其他情况通过递归处理更高次幂。

  4. 最后,去掉字符串开头的 "+" 符号,即为所求的指数形式表示。

  5. 在 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;
}

提交结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/36075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s containerd 配置 http访问harbor image【最新--官方文档】

不看官方文档的代价&#xff1a;在搜索了很多中文资料发现配置了都不起作用&#xff0c;浪费了很多时间。 https://github.com/containerd/containerd/blob/main/docs/cri/config.md#registry-configuration The old CRI config pattern for specifying registry.mirrors and…

MySQL8安装和删除教程 保姆级(Windows)

下载 官网: mysql官网点击Downloads->MySQL Community(GPL) Downloads->MySQL Community Server(或者点击MySQL installer for Windows) Windows下有两种安装方式 在线安装 一般带有 web字样 这个需要联网离线安装 一般没有web字样 安装 下载好之后,版本号可以不一样&…

Postman中,既想传递文件,还想传递多个参数(后端)

需求:既想传文件又想传多个参数可以用以下方式实现

Django rest_framework Serializer中的create、Views中的create/perform_create的区别

Django rest_framework Serializer中的create、Views中的create/perform_create的区别 对于后端来说&#xff0c;前后端分离的方式能让前后端的开发都爽。和所有的爽一样&#xff0c;每爽一次都要付出一定的代价。而前后端分离的代价&#xff0c;就是后端要面对巨量的模块化的功…

C语言实现插入排序

什么是插入排序&#xff1f; 插入排序&#xff08;Insertion Sort&#xff09; 是一种简单且逐步构建有序序列的排序算法。它的思想是将数组分为两部分&#xff1a;已排序的部分和未排序的部分。初始时&#xff0c;已排序部分只包含数组的第一个元素&#xff0c;然后逐步将未排…

Process.Start 报错

Process.Start 报错 System.Diagnostics.Process.StartWithShellExecuteEx Process.Start 为什么会引发“系统找不到指定的文件”异常 Process.Start 报错 找不到路径 ,System.ComponentModel.Win32Exception:“系统找不到指定的文件。 问题1、 在WinForm中可能是权限问题&…

做了这件事,精准拿捏企业资产管理!

资产管理系统是一种为组织和个人提供管理各类资产的重要工具。无论是金融资产还是实物资产&#xff0c;这些都构成了一个实体或个人财务状况的重要组成部分。 无论是企业寻求优化其固定资产维护&#xff0c;还是个人希望更好地管理他们的投资组合&#xff0c;资产管理系统在现代…

NZ系列工具NZ02:VBA读取PDF使用说明

【分享成果&#xff0c;随喜正能量】时光绽放并蒂莲&#xff0c;更是一份殷殷嘱托&#xff0c;更是一份诚挚祝福&#xff0c;是一份时光馈赠&#xff0c;又是一份时光陪伴。。 我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解…

“深入解析JVM:探索Java虚拟机的工作原理与优化技巧“

标题&#xff1a;深入解析JVM&#xff1a;探索Java虚拟机的工作原理与优化技巧 摘要&#xff1a;本文将深入探讨Java虚拟机&#xff08;JVM&#xff09;的工作原理、内部结构以及如何优化Java应用程序的性能。我们将介绍JVM的主要组件&#xff0c;包括类加载器、运行时数据区域…

关于openssl SM2 ECC以及密钥生成和签名验签

SM2是基于ECC的国密算法,本身也是ECC算法。 openssl生成ECC公私钥并签名验签 #!/bin/sh openssl ecparam -genkey -name prime256v1 -out private.pem #print pri #openssl ec -in private.pem -text -noout openssl ec -in private.pem -pubout -out public.pem #gen test.…

uniapp+uview封装小程序请求

提要&#xff1a; uniapp项目引入uview库 此步骤不再阐述 1.创建环境文件 env.js&#xff1a; let BASE_URL;if (process.env.NODE_ENV development) {// 开发环境BASE_URL 请求地址; } else {// 生产环境BASE_URL 请求地址; }export default BASE_URL; 2.创建请求文件 该…

QLExpress动态脚本引擎解析工具

介绍 QLExpress脚本引擎 1、线程安全&#xff0c;引擎运算过程中的产生的临时变量都是threadlocal类型。 2、高效执行&#xff0c;比较耗时的脚本编译过程可以缓存在本地机器&#xff0c;运行时的临时变量创建采用了缓冲池的技术&#xff0c;和groovy性能相当。 3、弱类型脚本…

广西Geotrust单位多域名https证书推荐

Geotrust是国际知名CA认证机构&#xff0c;根证书是Digicert&#xff0c;还有RapidSSL、QuickSSL等子品牌&#xff0c;拥有多种类型的多域名https证书&#xff0c;比如OV企业型https证书和EV增强型多域名https证书。那么&#xff0c;哪种多域名https证书更适合企事业单位使用呢…

SpringBoot复习:(43)如何以war包的形式运行SpringBoot程序

一、.pom.xml配置packging为war <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…

Android 内存泄漏

名词解释 内存泄漏:即memory leak。是指内存空间使用完毕后无法被释放的现象&#xff0c;虽然Java有垃圾回收机制&#xff08;GC&#xff09;&#xff0c;但是对于还保持着引用&#xff0c; 该内存不能再被分配使用&#xff0c;逻辑上却已经不会再用到的对象&#xff0c;垃圾回…

react如何实现数据渲染

React数据渲染是指将组件中的数据映射到页面上&#xff0c;以展示出来。在React中&#xff0c;数据渲染通常是通过JSX和组件的state或props完成的。 JSX是一个类似HTML的语法&#xff0c;可以在其中嵌入JavaScript表达式。在JSX中&#xff0c;可以使用{}包裹JavaScript表达式&…

解决C语言中使用scanf输入字符串导致for循环失效的问题

在C语言编程中&#xff0c;使用scanf函数输入字符串是一项基本操作。然而&#xff0c;当我们尝试在for循环中使用scanf输入字符串时&#xff0c;可能会遇到意外的问题&#xff0c;导致循环无法正常执行。本文将深入探讨这个问题&#xff0c;并提供解决方案&#xff0c;让你能够…

考公-判断推理-定义判断

第九节课 例题 例题 例题 例题 例题 例题 脚一滑&#xff0c;就是工伤&#xff0c;这难道不是操作不当吗 例题 不要较真&#xff0c;公务员&#xff0c;把没有全局观念的人排除在公务员队伍之外 例题 例题 下次看到不字&#xff0c;先给我画上 例题 例题 例题 例题…

微信群聊微信机器人实现流程

1.注册微信账号 要使用一个微信机器人账号来实现在微信群聊中的自动回复功能&#xff0c;你需要注册一个专门用于机器人的微信账号。 注册微信机器人账号的步骤如下&#xff1a; 下载微信&#xff1a;在手机或者电脑上下载并安装微信应用程序。创建新账号&#xff1a;打开微信…

力扣63.不同路径II(动态规划)

/*** author Limg* date 2022/08/09* 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。* 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。* 现在考虑网…