2-2 进制转换(Q进制转换成T进制) (25分)
给定一个整数Q(2<=Q<=10),一个非空字符串,以及另一个整数T(2<=T<=10),编程要求过滤掉字符串中所有非Q进制数对应的字符组成一个新的字符串,该字符串无正负号,将该字符串表示的Q进制数转换为T进制数的字符串输出。
输入格式:
第一行输入一个整数Q, 代表Q进制(2<=Q<=10)
第二行输入以回车结束的一行非空字符串。
第三行输入一个整数T, 代表要转换成T进制
输出格式:
输出转换后的T进制数字符串。
输入样例:
10
15
2
输出样例:
1111
代码如下:
进制转换
👆曾经记录的进制转换,有比10进制跟高的进制(如十六进制)的处理方法。本题不涉及比10进制跟高的进制
#include<bits/stdc++.h>
using namespace std;
int num[10]={0,1,2,3,4,5,6,7,8,9};
string TentoT(int n,int T){ //十进制->T进制
string ans = "";
while(n){
ans += n%T+'0';
n /= T;
}
reverse(ans.begin(),ans.end());
return ans;
}
int main(){
int Q,T,ans=0;
string str = "";
cin >> Q;
getchar();
getline(cin,str);
for(int i=0;i<str.size();i++){
for(int j=0;j<Q;j++) {
if(str[i]==num[j]+'0'){
ans = ans*Q+num[j]; //Q进制->十进制
break;
}
}
}
cin >> T;
if(T==10) cout << ans << endl;
else cout << TentoT(ans,T) << endl;
return 0;
}