首页 > 其他分享 >进制转换2【清华大学考研机试题】

进制转换2【清华大学考研机试题】

时间:2023-03-05 22:12:52浏览次数:30  
标签:10 include 试题 int back v1 考研 进制

进制转换2

将 M 进制的数 X 转换为 N 进制的数输出。

输入格式
第一行包括两个整数:M 和 N。

第二行包含一个数 X,X 是 M 进制的数,现在要求你将 M 进制的数 X 转换成 N 进制的数输出。

输出格式
共一行,输出 X 的 N 进制表示。

数据范围
2≤N,M≤36,
X 最多包含 100 位。
在输入中,当某一位数字的值大于 10(十进制下)时,我们用大写字母 A∼Z,分别表示(十进制下的)数值 10∼35。
在输出中,当某一位数字的值大于 10(十进制下)时,我们用小写字母 a∼z,分别表示(十进制下的)数值 10∼35。

输入样例:
10 2
11
输出样例:
1011

代码

点击查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<cctype>
using namespace std;

#define X first
#define Y second

typedef pair<int,int> pii;
typedef long long LL;
const char nl = '\n';
const int N = 1e6+10;
const int M = 2e5+10;
int n,m;
vector<int> v1,v2;

string turn(string s,int a,int b){
	for(auto x:s){
		if(isdigit(x))v1.push_back(x-'0');
		else {
			x = tolower(x);
			v1.push_back(x-'a'+10);
		}
	}
	reverse(v1.begin(),v1.end());
	while(v1.size()){
		int r = 0;		//记得每次要清空余数
		for(int i = v1.size() - 1; i >= 0; i -- ){
			int t = v1[i] + r * a;
			r = t % b;
			v1[i] = t / b;
		}
		v2.push_back(r);
		while(v1.size() && !v1.back())v1.pop_back();
	}
	string ret = "";
	reverse(v2.begin(),v2.end());
	for(auto x:v2){
		if(x < 10)ret += (x + '0');
		else ret += (x - 10 + 'a');
	}
	return ret;
}

void solve(){
	int a,b;
	cin >> a >> b;
	string s;
	cin >> s;
	cout << turn(s,a,b);

}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);

	solve();
}

标签:10,include,试题,int,back,v1,考研,进制
From: https://www.cnblogs.com/J-12045/p/17181882.html

相关文章

  • 3 月 1 日测试题解
    3月1日测试题解T1题意给你一个\(n\timesm\)的01矩形,求一个面积最大的不包含数字1的矩形。\(n,m\le1000\)。思路首先,这道题的数据水到了什么程度呢?\(O(n......
  • 进制转换 洛谷P1017
    题目传送门题目描述我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 1010 为底数的幂之和的形式。例如 123123 可表......
  • #yyds干货盘点# LeetCode面试题:外观数列
    1.简述:给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符......
  • 无符号二进制加法
    无符号二进制加法,需要保证两个相加的加数均为无符号数,如果有一个位有符号数,则均为有符号运算,结果为有符号数,即对于减法来讲,不存在无符号减法。  无符号A+无符号B=无......
  • Mysql 中二进制日志的初步认知
    二进制日志二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要的作用。开启二进制日志可以在​​my.cnf​​​文件或者​​my......
  • 指针和数组笔试题解析
    在大多数情况下,数组名就是数组首元素的地址,但是有两种特殊情况:一、sizeof(数组名):当数组名单独放在sizeof内部,指的是整个数组二、&数组名:取的是整个数组的地址,但是结果和首......
  • #yyds干货盘点# LeetCode面试题:解数独
    1.简述:编写一个程序,通过填充空格来解决数独问题。数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗......
  • pat乙级1022 D进制的A+B
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#defineN100intmain(){inta,b,d;scanf("%d%d%d",&a,&b,&d);intnum......
  • Python全栈面试题及知识点总结
    Python全栈面试题Python全栈阶段总结:https://github.com/HkwJsxl/PythonFullStack/tree/master/NotesPython基础基础逻辑运算v2="wupeiqi"and"alex"#第一步:将a......
  • shell相关基础面试题
    用sed修改test.txt的23行test为tset;sed–i'23s/test/tset/g'test.txt查看/web.log第25行第三列的内容。sed–n‘25p’/web.log|cut–d“”–f3head–......