老题新解|十进制转二进制

作者:程序员莫小特日期:2025/10/10

《信息学奥赛一本通》第160题:十进制转二进制

题目描述
给定一个十进制整数 n nn,请将其转换为对应的二进制表示,并输出。
输入格式
输入包含一行,一个整数 n nn。
输出格式
输出一行,表示整数 n nn 的二进制表示(不含前导零)。
输入输出样例 #1
输入 #1
10
输出 #1
1010
说明/提示
n nn 保证在 int 类型范围内,即 0 ≤ n ≤ 2 31 − 1 0 \leq n \leq 2^{31}-10≤n≤231−1。
输出时不允许有前导零。
数据范围
0 ≤ n ≤ 2 31 − 1 0 \leq n \leq 2^{31}-10≤n≤231−1
提示: n = 0 n = 0n=0 的情况需要特殊考虑。

大家好,我是莫小特。
这篇文章给大家带来《信息学奥赛一本通》中的第 160 题:十进制转二进制

image.png

一、题目描述

洛谷的题号是:B2161 十进制转二进制

image.png

二、题意分析

这道题是信息学奥赛一本通练习题的第 160 题。

根据输入格式的描述,输入一个整数 n,数据范围: 0 ≤ n ≤ 2 31 − 1 0 \leq n \leq 2^{31}-10≤n≤231−1,所以使用 int 类型。

1int n;
2cin>>n;
3

输入完成后,我们根据题目意思完成,题目要求我们将输入的十进制数转换为对应的二进制数并输出。

根据二进制的转换规则,需要对输入的数据进行求 2 的余数处理,也就是将余数存储起来,最后倒序输出即可。

使用 while 循环对输入的 n 进行处理,并且还需要建立一个 int 类型的数字,数组元素个数先初始化为 2000,数组下标从 1 开始,所以定义一个变量,初始值为 1。

1int a[2000]={0};//初始值为0
2int k=1;
3while(n!=0)//求到尽头是n==0
4{
5	a[k]=n%2;//存储余数
6	n/=2;
7	k++;//下标变化	
8}
9

最后输出 a 数组即可,注意要倒序输出,从 k-1 开始到 1。

1for(int i=k-1;i>=1;i--)
2{
3	cout<<a[i];
4}
5

按照样例输入对数据进行验证。

image.png

符合样例输出,到网站提交测评。

image.png

有一个错误,注意到提示:n=0 的情况需要特殊考虑。

所以特殊做一个判断。

1if(n==0)
2{
3	cout<<0;
4	return 0;
5}
6

其他情况就正常输出即可,即加上 else,再次尝试。

image.png

测试通过!

三、完整代码

该题的完整代码如下:

1
2

四、总结

本题考察了 进制转换与数组倒序输出 的基本操作,主要涵盖以下知识点:

1、十进制转二进制的算法原理:不断对 2 取余并整除 2。
2、数组或字符串的逆序输出技巧:先存储再倒序输出。
3、特殊输入处理:当 n=0 时需单独输出“0”,否则结果为空。

知识点总结

(1)利用 %2 获取当前位的二进制值,利用 /2 逐步缩小 n,实现除二取余法。

(2)数组下标的使用要注意从 1 开始存储余数,最后从 k-1 递减输出。

(3)特殊值 n=0 是常见边界测试点,需要单独判断,否则不会输出任何内容。

常见易错点

(1)忘记处理 n=0 的情况,导致输出为空。

(2)输出顺序写反(从前往后输出),会得到错误的二进制结果。

(3)数组越界或下标起始错误(如从 0 开始)可能导致最后一位缺失。

(4)输出结果时不应出现前导零。

解题建议

(1)建议先用手算几组数据,理解“除二取余、反向输出”的逻辑。

(2)提交前务必检查 n=0 的边界输入是否正确处理。

---end---

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注我哦!
如果有更好的方法也可以在评论区评论哦,我都会看哒~

我们下集见~


老题新解|十进制转二进制》 是转载文章,点击查看原文


相关推荐


单机已达上限?PerfTest 分布式压测登场,轻松模拟百万用户洪峰
Go有引力2025/10/9

前言 在前一篇文章中,我们详细介绍了 perftest 的单机压测能力,展示了它如何通过极简的命令行实现对 HTTP/1.1、HTTP/2、HTTP/3 与 WebSocket 的高性能测试。然而,当业务系统庞大、服务部署分布式、网络链路复杂时,单机的压测能力显然无法满足真实生产环境的模拟需求。 幸运的是,perftest 不止于单机。它同样支持 分布式集群压测,通过 Collector + Agent 的架构,让你轻松在多台机器上同时发起测试,实现百万乃至千万级并发的性能评估。 为什么选择分


Webpack实战笔记:从自动构建到本地服务器搭建的完整流程
XiangCoder2025/10/7

作为前端开发者,Webpack 是绕不开的构建工具。最近系统学习了 Webpack 的自动构建和服务器搭建,整理了一套从基础到实战的操作笔记,包含具体案例和踩坑经验,适合新手跟着实操。 前言:为什么需要 Webpack 构建工具? 刚开始写前端项目时,我们习惯在 index.html 里手动引入各种 js、css 文件。但随着项目变大,会遇到两个核心问题: 资源越来越多,手动管理引入路径容易出错(尤其是加哈希值优化缓存时); 开发时需要频繁刷新页面看效果,效率太低。 Web


Android系统模块编译调试与Ninja使用指南
龙之叶2025/10/6

模块编译调试方法 (此处举例framework、installd、SystemUI等模块的编译调试,其他类似) 1. Framework模块编译 Android系统代码的framework目录内,一共有3个模块单独编译:framework、services、framework-res.apk。 注意:偶尔会有改了代码但没检测到,编译结束后产物并未更新的情况,所以可以考虑先剪切掉原先的产物或者检查产物更新时间确保已经重新编译。 步骤: 完成根目录下 source build/envsetup.sh


精选 4 款开源免费、美观实用的 MAUI UI 组件库,助力轻松构建美观且功能丰富的应用程序!
追逐时光者2025/10/5

前言 一套优秀的 UI 组件库不仅能大幅提升开发效率,还能显著增强应用的视觉体验与交互质感。今天大姚给大家分享 4 款开源免费、美观实用的 MAUI UI 组件库,助你轻松打造专业级的跨平台应用程序。 .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET开源免费的跨平


医院病人信息管理系统 Web 版开发实战(一)
FPGA+护理+人工智能2025/10/3

医院病人信息管理系统Web版开发实战 文章目录 医院病人信息管理系统Web版开发实战一、概述二、项目结构搭建2.1 Flask 项目结构原理2.2 创建项目文件夹2.3 初始化 Flask 应用 三、路由设计3.1 Flask 路由机制原理3.2 定义核心路由3.3 数据存储函数 四、模板开发4.1 Jinja2 模板引擎原理4.2 基础模板设计4.3 首页模板(index.html)4.4 添加病人模板(add.html)4.5 详情和编辑模板 未完待续


Java-Spring入门指南(十一)代理模式与Spring AOP实战
珹洺2025/10/2

Java-Spring入门指南(十一)代理模式与Spring AOP实战 前言一、代理模式1.1 静态代理步骤1:定义租房接口(抽象行为)步骤2:实现房东类(真实对象)步骤3:编写中介类(代理对象)步骤4:测试静态代理静态代理的优缺点 1.2 动态代理 二、AOP是什么?2.1 AOP是什么?2.2 AOP有什么用?2.3 AOP的使用场景是什么?2.4 AOP的核心特点是什么? 三、AOP在Spring中的应用3.1 准备依赖3.2 配置Spring的AOP命名空间3.3 定义


(14)ASP.NET Core2.2 中的日志记录
老葱头蒸鸡2025/10/2

1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API。本文介绍了如何将日志记录API与内置提供应用程序一起使用。 2.添加日志提供程序 日志记录提供应用程序显示或存储日志。例如,控制台提供应用程序在控制台上显示日志,Azure Application Insights提供应用程序将这些日志存储在Azure Application Insights中。要添加提供应用程序,请在Program.cs中调用提供程序的Add{provider name}扩


Python 的内置函数 abs
IMPYLH2025/10/2

Python 内建函数列表 > Python 的内置函数 abs 无论是在数学计算、数据分析,还是日常编程中,我们经常需要获取一个数的绝对值。Python 提供的 abs() 函数,可以让我们轻松地计算数字的绝对值,而无需手动判断正负。 abs 函数的参数和返回值如下: def abs(x): ''' 计算参数的绝对值 :param x: 要计算的值 :return: x 的绝对值 ''' 示例 在线运行 print(abs(-50)) p


[论文阅读] 人工智能 + 软件工程 | 从“人工扒日志”到“AI自动诊断”:LogCoT框架的3大核心创新
张较瘦_10/1/2025

随着软件服务系统日益庞大、复杂,基于日志的故障诊断对保证软件服务的可靠性至关重要。已有的日志故障诊断方法虽能确定故障类型,但无法为推理过程提供解释,导致难以在生产环境部署。为此,本文提出LogCoT框架,通过Auto-FSC算法利用超大规模闭源LLM提取日志语义,生成可解释根因分析报告;结合无类别标注指令优化与有类别标注参数微调,优化Mistral基座模型;再用LLMf-IPO算法纠正错误结果,对齐用户意图。在两大生产日志数据集上的实验表明,LogCoT在Accuracy、Macro-F1、Weighted


WPS文字如何合并多个文档:两种方法
揭老师高效办公9/30/2025

要合并多个Word文档,使用WPS文字有两种方法,一种是插入附件,引用附件中的文字,会把所有文档中的文字依次合并。第二种方式需要会员,使用WPS的“文档合并拆分”应用,每个文档都会从新的一页开始插入。

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0