考研机试刷题第二天:任意进制转任意进制【高进度短除法】

理一下思路:

看了y总的视频之后我觉得这道题其实只需要对上次写的进制转换微微做一下调整即可。

于是我写出了下面的代码

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

vector<int> Change(vector<int> num,int m,int n){
	vector<int> C;
	int r = 0;
	for(int i=num.size()-1;i>=0;i--){
		//现将现在需要除的数加上上一位余下的数
		r =  r * m + num[i];
		//现在将余数塞入数组。
		C.push_back(r/n);
		r = r%n;
	}
	reverse(C.begin(),C.end());
	while(!C.empty() && C.back()==0) C.pop_back(); 
	return C;
}

int main(){
	int n,m;
	cin>>m>>n;
	string number;
	cin>>number;
	vector<int> num;
	
	int vn = number.size();
	for(int i=0;i<vn;i++){
	    num.push_back(number[vn-1-i] - '0');
	}
	string str;
	while(!num.empty()){
		str += to_string(num[0]%n); 
		num = Change(num,m,n);
	}
	reverse(str.begin(),str.end());
	cout<<str;
	return 0; 
}

提交之后,发现除了y总写在题面上的样例我是一个测试样例都没过。

 而且我发现题面的测试样例还就是10进制转二进制那。所以我就耐着性子继续看下去。

发现我少考虑了3点

1.十进制转比10进制小的进制在这道题里是极为特殊的情况 而且没有特判

因为如果是上述的情况 我们就可以这样做,因为作为十进制的最后一位%比10小的进制的结果其实就是整个十进制数%比10小的进制的结果。所以可以这样,但是其他情况如十进制转十二进制就不是这么一会事了。

while(!num.empty()){
		str += to_string(num[0]%n); 
		num = Change(num,m,n);
	}

应该改为下面的代码 ,r为每次做完一次除法的余数,所以每次出来的除数就可以直接作为答案的一部分入栈

if(number == "0") str ="0";
	else{
	while(!num.empty()){
		r = Change(num,m,n);
		if(r<10)str += to_string(r);
		else str += r-10+'a'; 
	}
	}

2. 在将字符串转为数字数组的过程中,我没有考虑到10以上的进制的特殊处理

for(int i=0;i<vn;i++){
	    num.push_back(number[vn-1-i] - '0');
	}

应将上述代码改为:

for(int i=0;i<vn;i++){
	    char a = number[vn - 1 -i];
	    if(a>='A') num.push_back(a - 'A' +10);
	    else num.push_back(a - '0');
	}

 3. 这里不是我的错误,应该算是我的知识盲区

大于十进制的转为十进制

if(a>='A') num.push_back(a - 'A' +10);

十进制转为大于十进制的

else str += r-10+'a'; 

整体代码如下:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

int Change(vector<int> &num,int m,int n){
	vector<int> C;
	int r = 0;
	for(int i=num.size()-1;i>=0;i--){
		//现将现在需要除的数加上上一位余下的数
		r =  r * m + num[i];
		//现在将余数塞入数组。
		C.push_back(r/n);
		r = r%n;
	}
	reverse(C.begin(),C.end());
	// for(int i=0;i<C.size();i++) cout<<C[i];
	// cout<<endl;
	while(!C.empty() && C.back()==0) C.pop_back(); 
	num = C;
	return r;
}

int main(){
	int n,m;
	cin>>m>>n;
	string number;
	cin>>number;
	vector<int> num;
	
	int vn = number.size();
	for(int i=0;i<vn;i++){
//2 ----------------------
	    char a = number[vn - 1 -i];
	    if(a>='A') num.push_back(a - 'A' +10);
	    else num.push_back(a - '0');
	}
	string str;
	int r;
	if(number == "0") str ="0";
	else{
// 1------------------
	while(!num.empty()){
		r = Change(num,m,n);
		if(r<10)str += to_string(r);
		else str += r-10+'a'; 
	}
	}
	reverse(str.begin(),str.end());
	cout<<str;
	return 0; 
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Moonbeam操作指南|如何使用Gelato创建自动化任务

Gelato是一个Web3去中心化自动化网络&#xff0c;允许开发者横跨多个基于EVM兼容区块链上自动化和连接任意的智能合约执行。&#x1f4d1;阅读中文版详细操作教程 举例来说&#xff0c;我们将使用MetaMask作为钱包。同时&#xff0c;您的钱包余额中需要有一些GLMR用于支付自动…

基于海洋捕食者算法的极限学习机(ELM)回归预测-附代码

基于海洋捕食者算法的极限学习机(ELM)回归预测 文章目录 基于海洋捕食者算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于海洋捕食者算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;本文利用海洋捕食者算法对极限学习…

深度学习笔记--本地部署Mini-GPT4

目录 1--前言 2--配置环境依赖 3--下载权重 4--生成 Vicuna 权重 5--测试 6--可能出现的问题 1--前言 本机环境&#xff1a; System: Ubuntu 18.04 GPU: Tesla V100 (32G) CUDA: 10.0 项目地址&#xff1a;https://github.com/Vision-CAIR/MiniGPT-4 2--配置环境依赖 …

python面试题

文章目录 赋值、深拷贝和浅拷贝有什么区别&#xff1f;元组和列表有什么不同&#xff1f;和is有什么不同&#xff1f;集合怎么转字典&#xff1f;字典怎么遍历&#xff1f;如何在Python中实现多线程&#xff1f;如何实现tuple和list的转换&#xff1f;实现删除一个list里面的重…

智能无人蜂群作战系统适应性进化模型仿真研究

源自&#xff1a;系统仿真学报 作者&#xff1a;李志强, 李元龙, 殷来祥, 马向平 摘 要 智能无人蜂群作战系统主要由有限行为能力的大规模作战个体组成&#xff0c;一般不具备应对复杂战场环境和作战对手变化的适应能力。采用遗传算法与增强学习相结合的方法探索构建基于个体…

Tre靶场通关过程(linpeas使用+启动项编辑器提权)

Tre靶场通关 通过信息收集获得到了普通用户账号密码&#xff0c;利用PEASS-ng的linpeas脚本进行提权的信息收集&#xff0c;根据已有信息进行提权。 靶机下载地址&#xff1a; https://download.vulnhub.com/tre/Tre.zip 信息收集 靶机IP探测&#xff1a;192.168.0.129 a…

vue2实现高德地图 JSAPI 2.0轨迹回放组件(MoveAnimation)

vue2实现高德地图 JSAPI 2.0轨迹回放组件(MoveAnimation) 声明: 本人是做java后端的,组件抽取不是很规范请大家见谅 前提: 需要注册高德开放平台,之后创建应用并且开通Web端(JS API)平台,然后拿到securityJsCode和key 实现效果: 1. 基础抽取 注意: 将securityJsCode和key修改为…

Hystrix线程池问题

背景&#xff1a;在一个以springcloud为基础架构的微服务项目中&#xff0c;活动期间并发量一大就会出现服务调用失败的问题。经定位发现&#xff0c;被调用服务中无对应的请求日志&#xff0c;继续通过日志查询确认是feign调用时出现服务降级&#xff0c;进入降级方法统一返回…

极化码的入门与探索

文章目录 极化码的基础先验知识二进制输入离散无记忆信道模型(Binary-input Discreten Memoryless Channel, B-DMC)二进制离散输入信道的ML判决和错误率B-DMC相关参数的定义和理解 两信道极化N信道极化的解释信道极化分解的蝶形结构补充&#xff1a;生成矩阵的结构 极化码的基础…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码

相关信息 &#xff08;1&#xff09;建模思路 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建…

C6678学习-EDMA

文章目录 1、简介1. EDMA3概述2、EDMA3的组成3、EDMA3的工作流程4、EDMA3通道控制器&#xff08;EDMA3CC&#xff09;5、触发方式 2、EDMA3的传输1、传输数据块的定义2、传输类型3、参数PaRAM4、通道5、OPT参数 3、补充1、EDMA3通道控制器区域 1、简介 1. EDMA3概述 基于C66x…

idea使用git遇到的小问题

idea使用git遇到的小问题 前置说明颜色含义中文插件修改提交的用户名 前置说明 idea版本为2022专业版 github需要自己会科学上网 颜色含义 在idea中使用github后&#xff0c;会发现项目中会有各种各样的颜色&#xff0c;如图所示文件全为绿色 这颜色含义分别为&#xff1a;…

亚马逊、Lazada、阿里国际、eBay、Temu、Ozon好消息不断,机会来了

1. 亚马逊第一季度营收1273.58亿美元 同比扭亏为盈 亚马逊2023财年第一季度财报。亚马逊第一季度净销售额为1273.58亿美元&#xff0c;与上年同期的1164.44亿美元相比增长9%&#xff0c;不计入汇率变动的影响为同比增长11%&#xff1b;净利润为31.72亿美元&#xff0c;上年同期…

牛客网---CM11 链表分割 代码详解+哨兵位的比较

文章目录 前言CM11 链表分割链接&#xff1a;方法一&#xff1a;尾插(带哨兵位)1.1 思路&#xff1a;1.2 代码&#xff1a;1.3 流程图1.4 注意点 方法二&#xff1a;尾插(不带哨兵位)2.1代码&#xff1a; 对比&#xff1a; 总结 前言 独处未必孤独喜欢就是自由 本章的内容是牛…

xawtv涉及的vivid系统调用分析

xawtv涉及的vivid系统调用分析 文章目录 xawtv涉及的vivid系统调用分析调用过程分析摄像头驱动程序必需的11个ioctl非必须必须 分析数据的获取过程1.请求分配缓冲区: ioctl(4, VIDIOC_REQBUFS // 请求系统分配缓冲区2.查询映射缓冲区:3.把缓冲区放入队列:4.启动摄像头5.用selec…

Shell+VCS学习2

Shell脚本常见问题 rm -f $2~ while read line 【最佳】形如while read line;do echo $line;done <test使用输入重定向的方式则每次只占用一行数据的内存&#xff0c;而且是在当前shell环境下执行的&#xff0c;while内的变量赋值、数组赋值在退出while后仍然有效。 nam…

Jetson Nano emmc版本系统镜像备份和烧录

一、镜像备份 1&#xff0e;将待复制的jetson设备进入恢复模式&#xff0c;用数据线连接jetson设备和主机。 对于原厂开发板将FC_REC引脚与GND短接&#xff0c;通过micro-usb到usb数据线连接到电脑。 在电脑的ubuntu通过lsusb命令查看需要备份的设备是否已经接入&#xff0c…

【VAR | 时间序列】以美国 GDP 和通货膨胀数据为例的VAR模型简单实战(含Python源代码)

以美国 GDP 和通货膨胀数据为例&#xff1a; 1. 数据集 下载数据我们需要从 FRED 数据库下载美国 GDP 和通货膨胀数据&#xff0c;并将它们存储在 CSV 文件中。可以在 FRED 网站&#xff08;https://fred.stlouisfed.org/&#xff09;搜索并下载需要的数据。在这里&#xff0…

Transformer结构细节

一、结构 Transformer 从大的看由 编码器输入、编码器、解码器、解码器输入和解码器输出构成。 编码器中包含了词嵌入信息编码、位置编码、多头注意力、Add&Norm层以及一个全连接层&#xff1b; 解码器中比编码器多了掩码的多头注意力层。 二、模块 2.1 Input Embeddi…

测试从业第 3 年,我看到了终点......

先说明&#xff0c;今天的内容&#xff0c;是写给想成为高级测试开发、自动化测试专家的人看的&#xff0c;因为&#xff0c;它可能颠覆你的认知。 众所周知&#xff0c;如今无论是大厂还是中小厂&#xff0c;自动化测试基本是标配了&#xff0c;毕竟像双11、618 这种活动中庞…