题目描述
请你编一程序实现两种不同进制之间的数据转换。
输入格式
共三行,第一行是一个正整数,表示需要转换的数的进制 � (2≤�≤16)n (2≤n≤16),第二行是一个 �n 进制数,若 �>10n>10 则用大写字母 A∼FA∼F 表示数码 10∼1510∼15,并且该 �n 进制数对应的十进制的值不超过 109109,第三行也是一个正整数,表示转换之后的数的进制 � (2≤�≤16)m (2≤m≤16)。
输出格式
一个正整数,表示转换之后的 �m 进制数。
输入输出样例
输入 #1复制
16 FF 2
输出 #1复制
11111111
#include<bits/stdc++.h>
using namespace std;
int n,m,s10;
string sn;
char sm[100000];
int zz(char c){
if(c>='0'&&c<='9')return c-'0';
return c-'A'+10;
}
char zz2(int x){
if(x<10){
return x+'0';
}
return x-10+'A';
}
int main(){
cin>>n>>sn>>m;
// sn=" "+sn;
for(int i=sn.size()-1,j=1;i>=0;i--,j*=n){
s10+=zz(sn[i])*j;
}
int c=0;
// cout<<s10<<endl;
while(s10){
sm[++c]=zz2(s10%m);
// cout<<sm[c]<<endl;
s10/=m;
}
for(int i=c;i>=1;i--){
printf("%c",sm[i]);
}
}