[保研/考研机试] KY26 10进制 VS 2进制 清华大学复试上机题 C++实现

news2024/11/22 22:10:21

题目链接:

10进制 VS 2进制icon-default.png?t=N6B9http://www.nowcoder.com/share/jump/437195121691738172415

描述

对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们称B为A的二进制逆序数。 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。

输入描述:

一个1000位(即10^999)以内的十进制数。


输出描述:

输入的十进制数的二进制逆序数。

示例1


输入:

173

输出:

181

思路:

  1. 输入一个十进制数 s
  2. 使用大整数除法函数 divides 不断除以 2,得到二进制数的各个位,存放在向量 binary 中,顺序是按位逆序排列的。
  3. 初始化一个字符串 res 为 "0",用于存放最终的结果。
  4. 遍历 binary 中的每一位,将 res 乘以 2(相当于左移一位),然后加上当前位的值,得到二进制逆序数的十进制表示。
  5. 输出最终的二进制逆序数。

注意:代码中使用了字符串来表示大整数,通过模拟除法、乘法和加法操作,实现了对二进制逆序数的计算和转换。

源代码:

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

// 例题6.3 KY26 10进制 VS 2进制 

// 字符串表示的大整数除法
string divide(string str, int x) {
    int reminder = 0;  // 余数
    for (int i = 0; i < str.size(); i++) {
        int current = reminder * 10 + str[i] - '0';  // 当前位的数值
        str[i] = current / x + '0';  // 更新当前位的值为商的字符表示
        reminder = current % x;  // 更新余数
    }
    int pos = 0;
    while (str[pos] == '0') {
        pos++;  // 移除前导零
    }
    return str.substr(pos);  // 返回除法结果,移除前导零
}

string multiple(string str, int x) {
    int carry = 0;  // 进位
    for (int i = str.size() - 1; i >= 0; i--) {
        int current = x * (str[i] - '0') + carry;  // 当前位的计算结果
        str[i] = current % 10 + '0';  // 更新当前位的值为计算结果的个位
        carry = current / 10;  // 更新进位
    }
    if (carry != 0) {
        str = "1" + str;  // 处理最终的进位
    }
    return str;
}

string Add(string str, int x) {
    int carry = x;  // 初始进位为 x
    for (int i = str.size() - 1; i >= 0; i--) {
        int current = (str[i] - '0') + carry;  // 当前位的计算结果
        str[i] = current % 10 + '0';  // 更新当前位的值为计算结果的个位
        carry = current / 10;  // 更新进位
    }
    if (carry != 0) {
        str = "1" + str;  // 处理最终的进位
    }
    return str;
}

int main() {
    string s;
    cin >> s;  // 输入十进制数
    vector<int> binary;  // 用于存放二进制逆序的每一位
    while (s.size() != 0) {
        int last = s[s.size() - 1] - '0';  // 取最后一位
        binary.push_back(last % 2);  // 将最后一位的余数(二进制的最低位)存入 vector
        s = divide(s, 2);  // 将十进制数除以 2,得到下一轮迭代的数值
    }

    // 将得到的 binary 中的按位逆序排列的二进制数转换为十进制数
    string res = "0";  // 初始化结果为 0
    for (int i = 0; i < binary.size(); i++) {
        res = multiple(res, 2);  // 将结果乘以 2,相当于左移一位
        res = Add(res, binary[i]);  // 加上当前位的值
    }
    cout << res << endl;  // 输出最终的二进制逆序数
   
    return 0;
}

提交结果:

 

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

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

相关文章

2023年国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

关于“算力”,这篇文章值得一看

2022-10-29 23:19 发表于北京 摘自&#xff1a;https://mp.weixin.qq.com/s/SEONRZtAmRvLFKOGeOY__g 这两年&#xff0c;算力可以说是ICT行业的一个热门概念。在新闻报道和大咖演讲中&#xff0c;总会出现它的身影。 那么&#xff0c;究竟到底什么是算力&#xff1f;算力包括哪…

Ceph读写性能估算方法

发布于 2018-08-13 12:42 阅读原文&#xff1a;http://www.cccttt.me/blog/2018/04/10/ceph-performance-estimate 1、前言 最近在做Ceph性能测试相关工作&#xff0c;在测试初期由于没有得到理想的测试结果&#xff0c;因此对Ceph集群进行了优化&#xff0c;但是一直有个问题…

docker搭建opengrok环境

引言&#xff1a; 由于这几天开始 http://aospxref.com/ 网站没法用了。用习惯了opengrok的方式看AOSP的源码&#xff0c;其他的在线查看源码的网站用起来都不是很理想。所以考虑搭建一个环境。 首先网上看了下opengrok的环境搭建的方式&#xff0c;最终还是采用docker的方…

7-4 求整数均值

本题要求编写程序&#xff0c;计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出4个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中按照格式“Sum 和; Average 平均值”顺序输出和与平均值&#xff0c;其中平均值精确到小…

2023年国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

CTFshow 限时活动 红包挑战7、红包挑战8

CTFshow红包挑战7 写不出来一点&#xff0c;还是等了官方wp之后才复现。 直接给了源码 <?php highlight_file(__FILE__); error_reporting(2);extract($_GET); ini_set($name,$value);system("ls ".filter($_GET[1])."" );function filter($cmd){$cmd…

华为云MetaStudio多模态数字人进展及挑战介绍

// 编者按&#xff1a;数字人作为AI能力集大成者&#xff0c;涉及计算机视觉、计算机图形学、语音处理、自然语言处理等技术&#xff0c;正在金融、政务、传媒、电商等领域应用越来越广。LiveVideoStackCon 2023 上海站邀请到华为云的李明磊为我们介绍华为云在数字人领域当前…

QLExpress动态脚本引擎解析工具

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

二十二、责任链模式

目录 1、使用demo演示责任链模式2、传统方案解决oa系统审批3、传统方案解决oa系统审批存在的问题4、职责链模式基本介绍5、职责链模式原理类图6、职责链模式解决oa系统采购审批7、职责链模式的注意事项和细节8、职责链模式的实际使用场景举例 1、使用demo演示责任链模式 学校o…

讯飞星火认知大模型升级体验

今天讯飞星火新版本已更新至现网&#xff0c;增加了多模态、插件等很多功能~,阅读原文可以申请体验 官网地址&#xff1a;https://xinghuo.xfyun.cn/ 多模态能力 多模理解&#xff08;图片&#xff09;&#xff1a;支持用户图片输入&#xff0c;针对图片内容进行视觉问答。 …

Thread.sleep()不释放锁 Object.wait()释放锁

sleep()方法 sleep()方法是线程类&#xff08;Thread&#xff09;的静态方法&#xff0c;让调用的线程进入指定时间睡眠状态&#xff0c;使得当前线程进入阻塞状态。 当线程获取锁时&#xff0c;sleep()方法不会释放对象锁 wait()方法 wait()方法是Object类里的方法&#xff0c…

12个有趣的css库

12个有趣的css库 1. Animate Animate 是一个即用型跨浏览器动画库&#xff0c;可在我们的 Web 项目中使用。非常适合强调、主页、滑块和注意力引导提示。 2. Magic Magic里包含了一组简单的动画&#xff0c;可以在我们的Web或app项目中使用。 3. Animista Animista 是一个 …

【Linux系统编程】23.孤儿进程、僵尸进程、wait、waitpid

目录 孤儿进程 测试代码1 测试结果 僵尸进程 测试代码2 测试结果 wait 参数*wstatus 返回值 测试代码3 测试结果 测试代码4 测试结果 测试代码5 测试结果 waitpid 参数pid 参数*wstatus 参数options 返回值 测试代码6 测试结果 测试代码7 测试结果 测…

Zemax2019中文设置

做软件教程啥时候都不能少了切换中文版啊~ 正常打开软件&#xff1a; 点击setup 中的preference 弹出窗口&#xff1a; 选择general 在language的下拉窗口中选择&#xff0c;中文 效果&#xff1a;

实验篇——亚细胞定位

实验篇——亚细胞定位 文章目录 前言一、亚细胞定位的在线网站1. UniProt2. WoLFPSORT3. BUSCA4. TargetP-2.0 二、代码实现1. 基于UniProt&#xff08;不会&#xff09;2. 基于WoLFPSORT后续&#xff08;已完善&#xff0c;有关代码放置于[python爬虫学习&#xff08;一&#…

[保研/考研机试] 杨辉三角形 西北工业大学复试上机题 C++实现

题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 输入n值&#xff0c;使用递归函数&#xff0c;求杨辉三角形中各个位置上的值。 输入描述: 一个大于等于2的整型数n 输出描述: 题目可能有多组不同的测试数据&#xff0c;对于每组输入数据&#xff0c; 按题目的要求输…

Java笔记-kafka

修改kafka的server.properties配置 概念 单播 一个消费组的消费者们只有一个能消费到消息。类似queue队列。 多播 不同的消费组的消费者能重复消费到消息&#xff0c;类似publish-subscribe模式 消费组偏移 kafka和别的消息中间件不一样&#xff0c;不同组可以重复消费&a…

Grafana监控 Redis Cluster

Grafana监控 Redis Cluster 主要是使用grafana来实现监控&#xff0c;grafana可以对接多种数据源&#xff0c;在官网中可以找到Redis数据源&#xff0c;需要安装redis data source插件。当然也可以利用Prometheus来做数据源&#xff0c;下面分别记录一下这两种数据源的安装配置…

前后端分离------后端创建笔记(04)前后端对接

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…