[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

news2024/9/25 11:14:05

描述

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入描述:

多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)

输出描述:

每行输出对应的二进制数。

示例1

输入示例:

0
1
3
8

输出示例:

0
1
11
1000

思路:

仍然是“除2取余法”,主要的区别在于这次要对一个字符串表示的大整数取余,因为输入的十进制数长度最多为30位数字,只能用字符串来表示。

将输入的十进制数字逐步除以2,并将每一步的余数保存在二进制数数组中。然后,从数组末尾开始输出数组中的元素,以得到正确的二进制表示。

函数 Divided 用于实现字符串表示的大整数的除法操作,并最后还去掉了结果字符串开头多余的0。整个程序通过循环处理多组输入的十进制数字。

源代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

// 用于将字符串表示的大整数除以 x,并返回商
string Divided(string str, int x) {
    int reminder = 0;
    for (int i = 0; i < str.size(); i++) {
        int current = str[i] - '0' + reminder * 10;  // 将当前位转换为整数并加上上一次的余数
        str[i] = current / x + '0';  // 将商转换为字符并保存到字符串中
        reminder = current % x;  // 更新余数
    }
    int pos = 0;
    while (str[pos] == '0') {
        pos++;  // 去掉结果字符串开头多余的零
    }
    str = str.substr(pos);  // 更新结果字符串

    return str;
}

int main() {
    string s;
    while (cin >> s) {
        vector<int> binary;  // 用于存储二进制数的每一位
        while (s.size() != 0) {
            int last = s[s.size() - 1] - '0';  // 获取字符串最后一位的整数值
            binary.push_back(last % 2);  // 将最后一位对2取余并保存到二进制数数组中
            s = Divided(s, 2);  // 将原字符串除以2,得到新的字符串
        }
        for (int i = binary.size() - 1; i >= 0; i--) {
            cout << binary[i];  // 从数组末尾开始输出二进制数,得到正确的二进制表示
        }
        cout << endl;
    }

    return 0;
}

提交结果:

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

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

相关文章

top解析

突然发现redis不能存进去数据了&#xff0c;导致线上的验证码前端获取不到&#xff0c;然后想着重启一下redis,结果就是报错no space left on device df -h或者df - i : 查看磁盘空间&#xff0c;文件大小 du -sh*: 查看所有子目录大小 linux 中如何查看磁盘剩余空间的总大小 d…

IT运维:SIEM在鸿鹄中的应用

引言 SIEM &#xff08; Security, Information, and Event Management&#xff09;安全信息和事件管理&#xff0c;它是一种安全解决方案&#xff0c;可提供对事件的实时监控和分析&#xff0c;以及出于合规性或审计目的跟踪和记录安全数据。 SIEM 大多数提供核心的功能&#…

Qt拖放事件与拖放操作笔记dragEnterEvent,dropEvent

1 介绍 拖放事件主要用于处理MIME数据&#xff0c;该数据是用于在发送电子邮件时&#xff0c;附加多媒体数据&#xff08;即拖拽一个文件放入邮件中&#xff0c;事件文件的上传&#xff09;。 2 示例 a&#xff09;使用简化步骤声明拖放事件成员函数&#xff1a; b&#xff09;…

AIDL踩坑记录

1、aidl文件编译不出java文件&#xff1a; 有两种解决方案&#xff1a; 1、利用as新建一个AIDL&#xff0c;aidl文件会在aidl目录的包名下面&#xff0c;as会自己识别 2、如果代码是编写在自己的目录中&#xff0c;可用sourceSets指定aidl目录 sourceSets {main {aidl.srcDi…

Sentieon | 应用教程: 关于读段组的建议

介绍 本文档描述了使用Sentieon Genomics软件时&#xff0c;推荐使用RGID字段以最小化潜在问题的用法。 本文档能帮助您确定设置所使用的bam文件中RG标签的不同字段的最佳实践方法。 RG字段及其用法的详细描述 RG字段的详细描述 SAM格式规范http://samtools.github.io/hts-…

同步辐射全散射PDF测试的原理及应用领域盘点

同步辐射全散射PDF测试的原理及应用领域盘点 同步辐射全散射PDF是一种强大的材料结构表征技术&#xff0c;它通过同步辐射X射线衍射技术&#xff0c;探测材料中原子间的相对位置与偏移&#xff0c;从而揭示材料的微观结构和性质。 同步辐射全散射PDF原理 同步辐射全散射PDF测试…

MAPPO 算法的深度解析与应用和实现

【论文研读】 The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 说明&#xff1a; 来源&#xff1a;36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks. 是NIPS文章&#xff0c;质量有保障&…

4个方面介绍云渲染技术的发展趋势和前景!

云渲染技术是一种新兴的渲染技术&#xff0c;它利用云计算的优势&#xff0c;将渲染任务分配到云端服务器上进行处理&#xff0c;从而大大提高了渲染效率和质量。云渲染技术在影视动画、建筑设计、游戏开发等领域有广泛的应用&#xff0c;为数字内容创作提供了便捷和高效的解决…

金融科技与现代开源技术结合的进展超前到你无法想象!

想要了解最新的金融科技进展吗&#xff1f; 渴望与其他技术爱好者交流&#xff0c;并扩展您在金融科技行业中的人脉关系吗&#xff1f; 那么请参加我们即将举行的 Meetup&#xff0c;本次活动由 Apache DolphinScheduler 社区和 OceanBase 技术社区共同举办&#xff0c;聚焦金…

为什么都劝年轻人不要频繁跳槽?

"为什么都劝年轻人不要频繁跳槽&#xff1f;"这句话绝对正确&#xff0c;没有任何漏洞&#xff0c;无论如何解释都是正确的&#xff0c;因为“频繁”这个词是非常主观的&#xff0c;有很大的弹性。 不同的人对于跳多少次才算频繁有不同的看法&#xff0c;有人认为一…

二、MySql库的操作

文章目录 一、库的操作&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建数据库案例&#xff08;三&#xff09;字符集和校验规则1、 查看系统默认字符集以及校验规则2、查看数据库支持的字符集3、查看数据库支持的字符集校验规则4、校验规则对数据库的影响…

转转短链平台设计与实现

1 背景介绍 转转是中国领先的二手交易平台&#xff0c;链接作为用户在平台上进行交互和信息传递的重要媒介&#xff0c;扮演着不可或缺的角色。 传统长链接通常包含大量字符和特殊符号&#xff0c;不易记忆和传播。由于字数的原因&#xff0c;长链接在发送短信&#xff0c;生成…

策略模式【Strategy Pattern】

刘备要到江东娶老婆了&#xff0c;走之前诸葛亮给赵云&#xff08;伴郎&#xff09;三个锦囊妙计&#xff0c;说是按天机拆开解决棘手问题&#xff0c; 嘿&#xff0c;还别说&#xff0c;真是解决了大问题&#xff0c;搞到最后是周瑜陪了夫人又折兵呀&#xff0c;那咱们先看看…

Linux 的基本使用

1、Linux 是什么 Linux 是一个操作系统. 和 Windows 是 "并列" 的关系 Linux 严格意义来说只是一个 "操作系统内核". 一个完整的操作系统 操作系统内核 配套的应用程序. CentOS 和 RedHat 的关系 RedHat一直都提供源代码的发行方式&#xff0c;Cent…

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值&#xff08;default&#xff09;1.3 列描述&#xff08;comment&#xff09;1.4 zerofill1.5 主键&#xff08;primary ke…

新型网络安全:从过程到明确结果

内容 过去的情况网络安全是理论性的&#xff0c;结果才是实际性的。这可能吗&#xff1f;我们现在的努力方向结论 本文讲述了为什么企业必须重新思考其网络安全方法&#xff1a;旧方法是否足够有效&#xff0c;是否可以完全适用&#xff1f;公司应采取哪些行动来实现内部信息…

【Spring Boot】构建RESTful服务 — RESTful简介

RESTful简介 本节将从基础的概念开始介绍什么是RESTful、RESTful的特点、RESTful中的资源、HTTP Method、HTTP Status&#xff0c;还将介绍RESTful和SOAP到底有哪些区别。 1.什么是RESTful RESTful是目前流行的互联网软件服务架构设计风格。REST&#xff08;Representationa…

HCIA---路由器--静态路由

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.路由器简介 路由器是一种网络设备&#xff0c;用于将数据包从一个网络发送到另一个网络…

系统架构设计师-系统可靠性分析与设计

目录 一、可靠性相关基本概念 二、可靠性指标 1、串联系统与并联系统可靠性指标计算 2、混合系统 三、可靠性设计 1、影响软件可靠性的主要因素&#xff1a; 2、增加可靠性的解决方案 2.1 避错技术 2.2 降低复杂度设计 2.3 检错技术 2.4 容错技术 3、双机容错 一、可靠性相关…

当涉及到Python计算结果的责任时,谁来负责呢?

代码质量和测试&#xff1a;在发布之前&#xff0c;通常会进行代码测试以确保基本的错误被避免。对于广泛使用的库和框架&#xff0c;如numpy、scipy和pandas&#xff0c;其代码正确性经过了充分的测试和验证&#xff0c;用户可以放心使用。社区维护和开发者&#xff1a;Python…