3057: 【普及-】【P1143】进制转换

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

请你编一程序实现两种不同进制之间的数据转换。

输入

共三行,第一行是一个正整数,表示需要转换的数的进制lns="http://www.w3.org/1998/Math/MathML">(216),第二行是一个n进制数,若lns="http://www.w3.org/1998/Math/MathML">>10则用大写字母lns="http://www.w3.org/1998/Math/MathML">表示数码lns="http://www.w3.org/1998/Math/MathML">1015,并且该lns="http://www.w3.org/1998/Math/MathML">进制数对应的十进制的值不超过lns="http://www.w3.org/1998/Math/MathML">1000000000,第三行也是一个正整数,表示转换之后的数的进制lns="http://www.w3.org/1998/Math/MathML">(216)

输出

一个正整数,表示转换之后的lns="http://www.w3.org/1998/Math/MathML">进制数。

样例输入 复制

16
FF
2

样例输出 复制

11111111

提示

#include<bits/stdc++.h>
using namespace std;
int char_to_int (char a) {  //单个字母转换为数字 
    return '0'<=a and a<='9'?a-'0':10+a-'A';	
}
char int_to_char(int a) {  //数字转换成单个字母 
	return a<=9?'0'+a:a-10+'A';
} 
int main(){
	int output[33];
    int n,m,dec=0,num=0;
    string input;
    cin>>n>>input>>m;
    //原数转换为十进制 
    for(int i=0;i<input.length();i++)
        dec=dec*n+char_to_int(input[i]);
    //转换为m进制 
    while (dec!=0) 
    	output[num++]=dec%m,dec/=m;
	//输出转换好的数字 
	for (int i=num-1;i>=0;i--)
		cout<<int_to_char(output[i]);
	cout<<endl;
	return 0;
}