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; }