Jerrlee's blog

Jerrlee's blog

B3620 题解

posted on 2022-03-28 08:05:30 | under 题解 |

题意

给一个 $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);
}

AC 记录