8.19华为OD机试真题 新系统 - 大整数位序反转 (Java/Py/C/C++/Js/Go)

大整数位序反转

2026 华为OD机试真题 8月19日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

小华是一名嵌入式开发工程师,在处理芯片寄存器数据时,经常需要对超多位数据进行位翻转操作。寄存器中的数据可能是几百位甚至更长。

给定一个十进制大整数(最多 100 位),请将其二进制表示中的所有位顺序全部翻转(最低位变成最高位,次低位变成次高位,以此类推),然后输出翻转后的十进制表示。

输入描述

一个十进制大整数(字符串形式,范围:0 ~ 10^100 - 1,输入不带前导零,除非为 0)。

输出描述

翻转后的十进制整数(字符串形式,不能有前导零,除非输出为 0)。

示例1

输入

1

输出

1

说明

1 的二进制为 1,翻转后仍为 1,对应十进制 1。

示例2

输入

2

输出

1

说明

2 的二进制为 10,翻转为 01(即 1),对应十进制 1。

示例3

输入

4

输出

1

说明

4 的二进制为 100,翻转为 001(即 1),对应十进制 1。

解题思路

核心思想

将输入的十进制大整数转成二进制字符串,反转这个二进制字符串,再把反转后的二进制字符串转回十进制字符串。

需要注意 0 的二进制反转后仍然是 0

算法步骤

  1. 读取一行十进制大整数字符串。
  2. 如果输入为 0,直接输出 0
  3. 将十进制大整数转成二进制表示。
  4. 反转二进制字符串。
  5. 将反转后的二进制字符串转回十进制并输出。

复杂度分析

设输入十进制位数为 d,二进制位数为 b

<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值