【C++数学 负进制】1017. 负二进制转换|1697

本文涉及知识点

数学

LeetCode1017. 负二进制转换

给你一个整数 n ,以二进制字符串的形式返回该整数的 负二进制(base -2)表示。
注意,除非字符串就是 “0”,否则返回的字符串中不能含有前导零。
示例 1:
输入:n = 2
输出:“110”
解释:(-2)2 + (-2)1 = 2
示例 2:
输入:n = 3
输出:“111”
解释:(-2)2 + (-2)1 + (-2)0 = 3
示例 3:
输入:n = 4
输出:“100”
解释:(-2)2 = 4

提示:
0 <= n <= 109

数学

函数f(n)的返回n的-2进制的字符串形式。
{ " " n 是 0 f ( n / − 2 ) + " 0 " n 是偶数 f ( ( n − 1 ) / 2 ) + “ 1 ” n 是奇数 \begin{cases} "" && n是0\\ f(n/-2)+"0" && n是偶数 \\ f((n-1)/2)+“1” && n是奇数\\ \end{cases} ""f(n/2)+"0"f((n1)/2+“1”n0n是偶数n是奇数
如: f(4) = f(-2)0 = f(1)00 = f(0)100=100
f(3) = f(-1)1 = f(1)11 = f(0)111=111
f(2) = f(-1)0 = f(1)10 = f(0)110=110

原理

除最低位外,其它都是-2的倍数,故如果n偶数,最低位为0;否则为1。余下的部分为: n或n-1。由于各位都是-2的倍数,故除以-2就是,除掉最低位后剩余的部分。
如果本题的n是0,直接返回"0",而不是空。

代码

核心代码

class Solution {public:string baseNeg2(int n) {if (0 == n) { return "0"; }return F(n);}string F(int n) {if (0 == n) { return ""; }if (1 & n) { return F((n - 1) / -2) + "1"; }return F(n / -2) + "0";}};

单元测试

TEST_METHOD(TestMethod1){auto res = Solution().baseNeg2(2);AssertEx(string("110"), res);}TEST_METHOD(TestMethod2){auto res = Solution().baseNeg2(3);AssertEx(string("111"), res);}TEST_METHOD(TestMethod3){auto res = Solution().baseNeg2(4);AssertEx(string("100"), res);}TEST_METHOD(TestMethod4){auto res = Solution().baseNeg2(0);AssertEx(string("0"), res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

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

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

相关文章

可训练的YOLO距离检测

由于很多场景需要测距&#xff0c;而深度图、点云等获取、配准、融合困难&#xff0c;尝试直接在目标增加距离标注进行训练&#xff0c;理论上标注准确&#xff0c;数据集够&#xff0c;就可以实现。 目前已经跑通YOLO增加距离训练&#xff1a; 目前准度不够&#xff0c;仅将…

Flutter Image和Text图文组件实战案例

In this section, we’ll go through the process of building a user interface that showcases a product using the Text and Image widgets. We’ll follow Flutter’s best practices to ensure a clean and effective UI structure. 在本节中&#xff0c;我们将使用“Te…

JVM 实战篇(一万字)

此笔记来至于 黑马程序员 内存调优 内存溢出和内存泄漏 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在 GC ROOT 的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内…

鸿蒙next之导航组件跳转携带参数

官方文档推荐使用导航组件的形式进行页面管理&#xff0c;官方文档看了半天也没搞明白&#xff0c;查了各种文档才弄清楚。以下是具体实现方法&#xff1a; 在src/main/resources/base/profile下新建router_map.json文件 里边存放的是导航组件 {"routerMap" : [{&q…

从汇编角度看C/C++函数指针与函数的调用差异

函数指针本质上是一个指针变量&#xff0c;只不过这个变量保存的地址是一个函数的地址&#xff0c;那么直接调用函数和通过函数指针调用有没有区别呢&#xff1f;答案是有的&#xff0c;下面的代码是一个直接调用函数和通过指针调用函数的例子&#xff0c;使用gdb反汇编main函数…

vue开发的时候,目录名、文件名、函数名、变量名、数据库字段等命名规范

在Vue开发中&#xff0c;函数名、文件名、目录名、变量名、数据库字段名的命名规范各有其特点&#xff0c;以下是根据Vue及JavaScript的命名习惯进行的详细解答&#xff1a; 分析 目录名 通常使用kebab-case&#xff08;短横线命名法&#xff09;&#xff0c;全部小写&#x…

mac电脑设置chrome浏览器语言切换为日语英语等不生效问题

在chrome中设置了语言&#xff0c;并且已经置顶了&#xff0c;但是不生效&#xff0c;在windows上直接有设置当前语言为chrome显示语言&#xff0c;但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的&#xff1a; 单独给它设定成指定的语言&#xff0c;然后重…

【每日一题】LeetCode - 判断回文数

今天我们来看一道经典的回文数题目&#xff0c;给定一个整数 x &#xff0c;判断它是否是回文整数。如果 x 是一个回文数&#xff0c;则返回 true&#xff0c;否则返回 false。 回文数 是指从左往右读和从右往左读都相同的整数。例如&#xff0c;121 是回文&#xff0c;而 123 …

Spring Boot整合Stripe订阅支付指南

在当今的在线支付市场中&#xff0c;Stripe 作为一款一体化的全球支付平台&#xff0c;因其易用性和广泛的支付方式支持&#xff0c;得到了许多企业的青睐。本文将详细介绍如何在 Spring Boot 项目中整合 Stripe 实现订阅支付功能。 1.Stripe简介 Stripe 是一家为个人或公司提…

全桥PFC电路及MATLAB仿真

一、PFC电路原理概述 PFC全称“Power Factor Correction”&#xff08;功率因数校正&#xff09;&#xff0c;PFC电路即能对功率因数进行校正&#xff0c;或者说是能提高功率因数的电路。是开关电源中很常见的电路。功率因数是用来描述电力系统中有功功率&#xff08;实际使用…

【GESP】C++一级练习BCQM3145,奇数求和

一级知识点for循环分和支语句if的应用的练习题。难度不大&#xff0c;综合性略微提升&#xff0c;感觉接近但略低于一级真题水平。 题目题解详见&#xff1a;https://www.coderli.com/gesp-1-bcqm3145/ https://www.coderli.com/gesp-1-bcqm3145/https://www.coderli.com/ges…

springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip

车辆管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统…

HTML标签汇总详解

一、前言 HTML 标签是用于定义网页内容结构和表现形式的标记。每个标签都有特定的含义和用途&#xff0c;通过不同的标签组合&#xff0c;可以构建出丰富多彩的网页。 二、标签的表现形式 2.1 单标签与双标签 根据标签的写法不同&#xff0c;可以将标签分为单标签和双标签。…

大数据-190 Elasticsearch - ELK 日志分析实战 - 配置启动 Filebeat Logstash

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

为微信小程序换皮肤之配置vant

微信小程序自带的控件虽然具有很好的通用性和简洁性&#xff0c;但在面对一些复杂的交互场景和个性化的设计需求时&#xff0c;可能会显得力不从心。其功能的相对基础使得开发者在实现诸如多步骤复杂表单提交、实时数据交互与可视化展示、高度定制化的界面布局等方面&#xff0…

vue3 选中对话框时,对话框右侧出一个箭头

先看下做出的效果&#xff1a; html代码&#xff0c;其中listPlan.records是后台拿到的数据进行遍历 <template><ul class"list"><li style"height: 180px;width: 95%":key"index"v-for"(item, index) in listPlan.record…

任务看板是什么?如何选择合适的任务看板工具?

一、任务看板是什么&#xff1f; 任务看板是一种可视化的项目管理工具&#xff0c;它通常以板状的形式呈现&#xff0c;将任务以卡片的形式展示在不同的列中&#xff0c;每一列代表任务的不同状态。例如&#xff0c;待办事项、进行中、已完成等。任务看板能够帮助团队成员清晰…

Android--简易计算器实现

以下实验是利用逍遥模拟器搭建的简易计算器页面 对现有功能说明&#xff1a;可实现双目运算和开方单目运算&#xff1b; 待改进&#xff1a;需要实现表达式的计算&#xff1b;以及负数参与运算&#xff1b; //XML代码<?xml version"1.0" encoding"utf-8&q…

排序(一)插入排序,希尔排序,选择排序,堆排序,冒泡排序

目录 一.排序 1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 二.整体代码 1.Sort.h 2.Sort.c 3.test.c 一.排序 1.插入排序 插入排序基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止…

ubuntu20.04上使用 Verdaccio 搭建 npm 私有仓库

安装nvm 首先安装必要的工具&#xff1a; apt update apt install curl下载并执行nvm安装脚本&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash添加环境变量&#xff08;如果安装脚本没有自动添加&#xff09;。编辑 ~/.bash…