全面 正进制数转化 函数模板(直接调用)

news2024/11/16 6:46:41

本题链接:用户登录

题目:

样例:

输入
2
2 10 
10101 
11 2
1793A5068

输出
21
10101111001010100111010101011

思路:

        对于进制数之间的转化,我们可以通过 以 十进制作为桥梁 进行进制数之间的转化

比如: Q 进制 转化为  K 进制

我们可以分为两个部分    Q 进制转化为 十进制      ,   十进制转化为  K 进制

这样就可以达到效果 为   Q 进制转化为  K 进制

废话不多说,具体原理代码函数模板如下:

inline string to_kbit(string &x,int &bit,int &nbit)
{
	int num = 0;	// 存储转化为 十进制的数值
	if(bit != 10)	// 如果不是十进制的数值,这开始转化为十进制的数值
	{
		int len = x.size();
		for(int i = 0;i < len;++i)
		{
			int have = x[i];
			if(isupper(have)) have = have - 'A' + 10;
			else have -= '0';
			num = num * bit + have;
		}
		bit = 10;
	}else num = stoll(x);	// 如果是十进制的数值我们先转化为 int 型,方便我们转化为 nbit 进制的数值
	if(bit == nbit) return to_string(num);
	string ans = "";	// 存储转化为 nbit 进制的结果数值
	do
	{
		int temp = num % nbit;
		num /= nbit;
		ans += (temp >= 10 ? temp + 'A' - 10: temp + '0');
	}while(num);
	reverse(ans.begin(),ans.end());
	return ans;
}

AC代码如下:

#include <iostream>
#include <algorithm>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;

inline string to_kbit(string &x,int &bit,int &nbit)
{
	int num = 0;	// 存储转化为 十进制的数值
	if(bit != 10)	// 如果不是十进制的数值,这开始转化为十进制的数值
	{
		int len = x.size();
		for(int i = 0;i < len;++i)
		{
			int have = x[i];
			if(isupper(have)) have = have - 'A' + 10;
			else have -= '0';
			num = num * bit + have;
		}
		bit = 10;
	}else num = stoll(x);	// 如果是十进制的数值我们先转化为 int 型,方便我们转化为 nbit 进制的数值
	if(bit == nbit) return to_string(num);
	string ans = "";	// 存储转化为 nbit 进制的结果数值
	do
	{
		int temp = num % nbit;
		num /= nbit;
		ans += (temp >= 10 ? temp + 'A' - 10: temp + '0');
	}while(num);
	reverse(ans.begin(),ans.end());
	return ans;
}

signed main()
{
//	freopen("a.txt","r",stdin);
	IOS;
	int _T;
	cin >> _T;
	while(_T--)
	{
		string s;
		int bit,nbit;
		cin >> bit >> nbit >> s;
		string ans = to_kbit(s,bit,nbit);	
		cout << ans << endl;
	}	
	return 0;
}

最后提交:

最后再给一个,大整数的情况下的进制数转化:

可能会超时,但是还是挺好玩的。

inline string to_kbit(string now_x,int bit,int nbit)
{
	// 字符串 大整数 加法模板
	auto ADD = [](string s1,string s2)->string
	{
	    vector<int>a,b,c;
	    string ans = "";
	    int alen = s1.size(),blen = s2.size();
	    for(int i = alen - 1;i > -1;--i) a.emplace_back(s1[i] - '0');
	    for(int i = blen - 1;i > -1;--i) b.emplace_back(s2[i] - '0');
	    int t = 0;
	    for(int i = 0;i < alen || i < blen;++i)
	    {
	        if(i < alen) t += a[i];
	        if(i < blen) t += b[i];
	        c.emplace_back(t % 10);
	        t /= 10;
	    }
	    if(t) c.emplace_back(1);
	    int clen = c.size();
	    for(int i = clen - 1;i > -1;--i)
	    {
	        ans += (char)(c[i] + '0');
	    }
	    return ans;
	};
	// 大整数除法模板
	auto Div = [](string s1,int b,int &r)->string
	{
		vector<int>a,c;
		string ans = "";
		int alen = s1.size();
		for(int i = 0;i < alen;++i) a.emplace_back(s1[i] - '0');
		r = 0;
		for(int i = 0;i < alen;++i)
		{
			r = r * 10 + a[i];
			c.emplace_back(r / b);
			r %= b;
		}
	    reverse(c.begin(),c.end());
		while(c.size() > 1 && c.back() == 0) c.pop_back();
		int clen = c.size();
		for(int i = clen - 1;i > -1;--i) ans += (c[i] + '0');
		return ans;
	};
	string nx = "";	
	if(bit != 10)
	{
		string x = "0";
		int product = 1;
		int idx = now_x.size() - 1;
		while(idx >= 0)
		{
			int have = now_x[idx--];
			if(isupper(have)) have = have - 'A' + 10;
			else have = have - '0';
			
			x = ADD(x,to_string(have*product));
			
			product *= bit;
		}
		now_x = x;
	}
	do
	{
		int r = 0;
		now_x = Div(now_x,nbit,r);
		nx += char(r >= 10 ? 'A' + r-10 : r + '0');
	}while(now_x != "0");
	reverse(nx.begin(),nx.end());
	return nx;
}

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

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

相关文章

【项目实战】Cadence工具的使用1

需要 Candece Jasper文档的朋友可以和我联系@tommi.wei@qq.com Vmanager 自动化仿真管理工具 对于这款工具,笔者用到最多的地方就是写testplan! 没错,根据设计文档(Target Specication),细分feature list. 对于验证工程师要做的事情,就是验证设计功能的完备性,需要逐一…

Django 7 实现Web便签

一、效果图 二、会用到的知识 目录结构与URL路由注册request与response对象模板基础与模板继承ORM查询后台管理 三、实现步骤 1. terminal 输入 django-admin startapp the_10回车 2. 注册&#xff0c; 在 tutorial子文件夹settings.py INSTALLED_APPS 中括号添加 "the…

基于spring boot的中小型仓库物流管理系统(Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

流行的Jmeter+Ant+Jenkins接口自动化测试框架在网络上走红

大致思路&#xff1a;Jmeter可以做接口测试&#xff0c;也能做压力测试&#xff0c;而且是开源软件&#xff1b;Ant是基于Java的构建工具&#xff0c;完成脚本执行并收集结果生成报告&#xff0c;可以跨平台&#xff0c;Jenkins是持续集成工具。将这三者结合起来可以搭建一套We…

Linkage Mapper 工具参数详解——Pinchpoint Mapper

【小白一学就会无需其他教程】此文档用于解析使用Linkage Mapper 各输入输出参数详情以及可能的影响&#xff0c;并介绍了如何解释模型输出结果和输出参数&#xff0c;适合刚入手的人。篇幅很长很啰嗦&#xff0c;是因为每个参数都解释的万分细致。 从以下链接中获取内容&…

PCIe 6.0生态业内进展分析总结

上一篇&#xff0c;我们针对PCIe 6.0的功能更新与实现挑战做了简单的分析与总结。更多详细内容可以参考&#xff1a; 扩展阅读&#xff1a;浅析PCIe 6.0功能更新与实现的挑战 那么&#xff0c;PCIe 6.0已经发布了一段时间了&#xff0c;业内硬件支持PCIe 6.0目前有哪些进展呢…

接口开发—hrun语法和用例规范

学习目标&#xff1a; 1、常见的抓包方法 2、如何提取和使用token 3、用例规范 4、辅助函数 具体内容&#xff1a; 1、常见的抓包方法 做接口测试前&#xff0c;肯定需要使用抓包工具去请求接口&#xff0c;然后才开始正常写接口用例。 常用的2种抓包方法有&#xff1a…

快递物流怎么寄最便宜?你一定要知道的5个方法 !

家人们&#xff0c;临近年关&#xff0c;大家的钱包是不是鼓鼓的了&#xff0c;难免的亲戚朋友之间会相互寄送一些东西&#xff0c;所以最近因为需要经常寄快递物流&#xff0c;小编所以特地整理了5个我们平时个人寄快递便宜的方法攻略&#xff0c;推荐第五个&#xff0c;实用干…

1.大数据概述

目录 概述hadoophadoop 模块hadoop 发行版apache社区版本CDP(CDHHDP)其它云产商框架选择 hadoop 安装 结束 概述 先了解几个常用的网站 apache 官网hadoop 官网hadoop githubhttps://github.com/apache/xxx [https://github.com/apache/spark (example)] hadoop hadoop 模块…

【计算机算法设计与分析】棋盘覆盖问题(C++_分治法)

文章目录 题目描述测试样例算法原理算法实现参考资料 题目描述 在一个 2 k 2 k 2^k \times 2^k 2k2k个方格组成的棋盘中&#xff0c;若恰有一个方格与其他方格不同&#xff0c;则称该方格为一个特殊方格&#xff0c;且称该棋盘为一个特殊棋盘。显然&#xff0c;特殊方格在棋…

论文阅读: Semantics-guided Triplet Loss

ICCV 2021 Abstract 一个度量学习方法&#xff0c;通过浏览语义引导的局部集合去优化内在深度表示。一个新颖的特征融合模块能有效利用跨模态特异质特征。 Senantics-guided Triplet Loss 基本假设&#xff1a; 在场景语义分割图像中&#xff0c;目标内部相邻像素拥有同样…

书生·浦语大模型全链路开源体系(陈恺|上海人工智能实验室 青年科学家)-听课笔记

大模型重要性 大模型确实已成为发展通用人工智能&#xff08;AGI&#xff09;的重要途径。它们通过整合和处理大量数据&#xff0c;学习语言、图像、声音等多种模式的表示&#xff0c;以此来模拟人类的学习和思维方式。通过不断地学习和优化&#xff0c;这些模型能够在各种任…

基于SSM的人事档案管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Fiddler抓取https原理?

首先fiddler截获客户端浏览器发送给服务器的https请求&#xff0c; 此时还未建立握手。 第一步&#xff0c; fiddler向服务器发送请求进行握手&#xff0c; 获取到服务器的CA证书&#xff0c; 用根证书公钥进行解密&#xff0c; 验证服务器数据签名&#xff0c; 获取到服务器C…

各类Java对象

相关概念的混淆 在某一时间段&#xff0c;人们对某种编程困境感到烦恼&#xff0c;不少人脑中产生了一种新开发方式的概念 一些代表人物提出了他们的意见&#xff0c;而同一时期可能又不少人对同一问题&#xff0c;用自己的不同语言提出不同概念 如果又官方组织维护概念&#x…

CSS新增文本描边-text-stroke属性

-webkit-text-stroke属性 概念&#xff1a;-webkit-text-stroke属性为文本添加描边效果。所谓的描边效果&#xff0c;指的是给文字添加边框 语法&#xff1a; -webkit-text-stroke:width color;Chrome和Firefox这两个浏览器都只能识别带有-webkit前缀的text-stroke属性 -web…

科锐16位汇编学习笔记 02 分段,机器码和寻址

分段 问题1 8086是16位cpu&#xff0c;最多可以访问&#xff08;寻址&#xff09;多大内存&#xff1f; - 运算器一次最多处理16位的数据。 - 地址寄存器的最大宽度为16位。 - 访问的最大内存为&#xff1a;216 64K 即 0000 - FF…

UOS下通过SSH隧道访问云端内网windows桌面

1 用户痛点 随着时代的发展&#xff0c;众多企业的服务器慢慢走向云端。大量云端服务器节省企业成本的同时&#xff0c;也带来了安全性问题。例如&#xff1a;管理云端的服务器&#xff0c;特别是windows桌面服务器&#xff0c;往往需要给这个服务器分配一个公网IP地址&#x…

ReCAPTCHA 解决方案的自动识别和解决方法

ReCAPTCHA&#xff0c;作为广泛使用的安全措施&#xff0c;旨在区分人类和自动化机器人。然而&#xff0c;技术的进步导致了自动识别和解决 ReCAPTCHA 挑战的方法的发展。在本文中&#xff0c;我们将探讨自动 ReCAPTCHA 识别和解决技术的概念&#xff0c;以及创新解决方案 Caps…

[附代码]稳态视觉诱发电位SSVEP之预训练模型提高性能

SSVEP 之深度学习 深度学习已经被广泛运用在脑电信号分析来提高脑机接口的性能,这是一个end-to-end的方法,简单来说,只要搭建好深度学习网络,做好特征工程,然后分类即可,对于一个刚刚接触脑机接口领域深度学习的学习者来说,可以先忽略中间的数学相关的东西,先建一个网…