当前位置: 首页 > news >正文

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

描述

将一个长度最多为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.lryc.cn/news/118011.html

相关文章:

  • vue3多条件搜索功能
  • C++20协程
  • Zabbix 6.0 监控其他
  • Django rest_framework Serializer中的create、Views中的create/perform_create的区别
  • 差异性分析傻瓜版
  • Keystone Automotive EDI 需求分析
  • jmeter创建一个压测项目
  • CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数
  • AI Deep Reinforcement Learning Autonomous Driving(深度强化学习自动驾驶)
  • Java super
  • 【人工智能前沿弄潮】——生成式AI系列:Diffusers学习(1)了解Pipeline 、模型和scheduler
  • TypeScript 非空断言
  • Python编程——谈谈函数的定义、调用与传入参数
  • 在Ubuntu中使用Docker启动MySQL8的天坑
  • Python3.x String内置函数大全
  • Go异常处理机制panic和recover
  • QMainwindow窗口
  • P5735 【深基7.例1】距离函数
  • prometheus告警发送组件部署
  • CAPL - XML和TestModule结合实现测试项可选
  • Latex安装与环境配置(TeXlive、TeXstudio与VS code的安装)编译器+编辑器与学习应用
  • STM32 F103C8T6学习笔记3:串口配置—串口收发—自定义Printf函数
  • python中字符串内建函数篇4
  • 并发下如何使用redis存储列表数据
  • Leecode螺旋矩阵 II59
  • echarts 横向柱状图
  • Vue3 —— to 全家桶及源码学习
  • (第三篇) ansible-kubeadm在线安装高可以用集群()
  • flutter开发实战-颜色Color与16进制转换
  • Linux(进程地址空间)