3057: 【例】【普及-】【P1143】进制转换
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
请你编一程序实现两种不同进制之间的数据转换。
输入
共三行,第一行是一个正整数,表示需要转换的数的进制,第二行是一个n进制数,若则用大写字母表示数码,并且该进制数对应的十进制的值不超过,第三行也是一个正整数,表示转换之后的数的进制。
输出
一个正整数,表示转换之后的进制数。
样例输入 复制
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;
}