[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

news/2024/11/17 4:52:30/

题目链接:

数制转换https://www.nowcoder.com/share/jump/437195121691734210665

描述

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

输入描述:

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。 数据可能存在包含前导零的情况。

输出描述:

可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

示例1

输入:

15 Aab3 7

输出:

210306

思路:

  1. 读入原进制 a、数字字符串 s 和目标进制 b。

  2. 将数字字符串按权展开转换为十进制数值 num,num 初始值为 0。

  3. 将十进制数值 num 按目标进制 b 转换为字符,将字符添加到结果字符串 res 中。

  4. 反转结果字符串 res 得到正确的转换结果。

  5. 输出转换后的结果。

源代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;// 将字符 c 转换为对应的十进制数值
int CharToInt(char c) {if (c >= '0' && c <= '9') {return c - '0';  // '0' 的 ASCII 值为 48,减去 '0' 后得到数值}else if (c >= 'a' && c <= 'f') {return c - 'a' + 10;  // 'a' 的 ASCII 值为 97,减去 'a' 后加上 10 得到数值}else{return c - 'A' + 10;  // 'A' 的 ASCII 值为 65,减去 'A' 后加上 10 得到数值}
}// 将整数 n 转换为对应的字符
char IntToChar(int n) {if (n >= 0 && n <= 9) {return n + '0';  // 数值加上 '0' 的 ASCII 值即为对应字符}else {return n - 10 + 'A';  // 数值减去 10 后加上 'A' 的 ASCII 值即为对应字符}
}int main()
{int a, b; // a:原进制,b:目标进制string s; // 输入的数字字符串while (cin >> a >> s >> b) {long num = 0; // 初始化十进制数值for (int i = s.size() - 1; i >= 0; i--) {num += CharToInt(s[i]) * pow(a, s.size() - 1 - i); // 将输入的数字字符串按权展开转换为十进制数值}string res = ""; // 初始化目标进制的结果字符串while (num != 0) {res += IntToChar(num % b); // 将十进制数值按目标进制转换为字符并添加到结果字符串中num /= b; // 取商继续处理}reverse(res.begin(), res.end()); // 反转结果字符串得到正确的转换结果cout << res << endl; // 输出结果}return 0;
}

提交结果:


http://www.ppmy.cn/news/1022614.html

相关文章

MongoDB 分片集群

在了解分片集群之前&#xff0c;务必要先了解复制集技术&#xff01; 1.1 MongoDB复制集简介 一组Mongodb复制集&#xff0c;就是一组mongod进程&#xff0c;这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性&#xff0c;这是生产部署的基础。 1.1.1 复制集…

Unity使用C# Protobuf源码

目录 第一步&#xff1a;下载源码 第二步&#xff1a;运行C#构建文件 第三步&#xff1a;处理报错&#xff08;如果你已安装对应的SDK则不会报错&#xff09; 第四步&#xff1a;复制库文件到你的工程 第一步&#xff1a;下载源码 protobuf github源码https://github.com/p…

Unreal DataTable使用

目的&#xff1a;在多个地方使用同一份结构体配置 C定义结构体 USTRUCT(BlueprintType) struct FXXX : public FTableRowBase {GENERATED_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "XXX")float XXX; }注意&#xff1a; 类的元数据加上 Bluep…

js继承,闭包和css继承

JavaScript继承 继承是一种面向对象编程的重要概念&#xff0c;JavaScript中可以通过原型链实现继承。闭包是一种特殊的函数&#xff0c;它可以访问其外部函数作用域中的变量。 下面是一个使用原型链实现继承的示例代码&#xff1a; // 父类 function Animal(name) {this.na…

C++中四种不同的强制转换方式的区别

在C中&#xff0c;有四种不同的强制转换方式&#xff0c;它们分别是静态转换、动态转换、常量转换和重新解释转换。下面是每种转换的区别&#xff1a; 静态转换&#xff08;static_cast&#xff09; 静态转换是最常用的强制转换方式之一&#xff0c;可以在具有良好定义的类型之…

(贪心) 剑指 Offer 14- I. 剪绳子 ——【Leetcode每日一题】

❓剑指 Offer 14- I. 剪绳子 难度&#xff1a;中等 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n都是整数&#xff0c;n > 1 并且 m > 1&#xff09;&#xff0c;每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m…

新零售智慧生态电商系统搭建,开源多用户商城系统开发(H5、Java)

搭建新零售智慧生态电商系统和开源多用户商城系统需要进行以下具体步骤&#xff1a; 1. 确定需求&#xff1a;首先明确系统的功能需求和技术要求&#xff0c;包括用户注册和登录、商品管理、购物车、订单管理、支付等功能。 2. 选择技术架构&#xff1a;确定使用的开发语言和…

VBA技术资料MF42:VBA_从Excel中上面的单元格复制公式

【分享成果&#xff0c;随喜正能量】唯有梦想才配让你不安&#xff0c;唯有行动才能解除你的不安.绳锯木断&#xff0c;水滴石穿。也许你现在做的事情很小&#xff0c;只要你能日积月累的坚持下去&#xff0c;才会发现意义非凡。所谓的成功&#xff0c;便是别人失败的时候你还在…