题意
给一个 $x$ 进制数 $s$,将其转化为 $10$ 进制。
思路
把每个 $x$ 进制数用字符串形式读入,一个字符一个字符地看,对于每一种情况打表,一一对应转化成字符串,存入到 sum
这个数字中即可。
注意特判数字为 $0$ 的情况。
推荐练习题:P1143,可以参考我的 另一篇题解 AC 那题。
代码
#include<bits/stdc++.h>
using namespace std;
int anything_to_ten(int n,string s){
if(s=="0") return 0;
int len=s.length(),sum=0,a=0;
for(int i=0;i<len;i++){
switch(s[i]){
case '0':a=0;break;
case '1':a=1;break;
case '2':a=2;break;
case '3':a=3;break;
case '4':a=4;break;
case '5':a=5;break;
case '6':a=6;break;
case '7':a=7;break;
case '8':a=8;break;
case '9':a=9;break;
case 'A':a=10;break;
case 'B':a=11;break;
case 'C':a=12;break;
case 'D':a=13;break;
case 'E':a=14;break;
case 'F':a=15;break;
case 'G':a=16;break;
case 'H':a=17;break;
case 'I':a=18;break;
case 'J':a=19;break;
case 'K':a=20;break;
case 'L':a=21;break;
case 'M':a=22;break;
case 'N':a=23;break;
case 'O':a=24;break;
case 'P':a=25;break;
case 'Q':a=26;break;
case 'R':a=27;break;
case 'S':a=28;break;
case 'T':a=29;break;
case 'U':a=30;break;
case 'V':a=31;break;
case 'W':a=32;break;
case 'X':a=33;break;
case 'Y':a=34;break;
case 'Z':a=35;break;
}
sum=sum*n+a;
}
return sum;
}
int main(){
int m;
string s;
cin>>m>>s;
cout<<anything_to_ten(m,s);
}