B3620 题解

Jerrlee✅

2022-03-28 08:05:30

Solution

## 题意 给一个 $x$ 进制数 $s$,将其转化为 $10$ 进制。 ## 思路 把每个 $x$ 进制数用字符串形式读入,一个字符一个字符地看,对于每一种情况打表,一一对应转化成字符串,存入到 `sum` 这个数字中即可。 注意特判数字为 $0$ 的情况。 推荐练习题:[P1143](https://www.luogu.com.cn/problem/P1143),可以参考我的 [另一篇题解](https://czy-ak-ioi.blog.luogu.org/b3619-ti-jie) AC 那题。 ## 代码 ```cpp #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 记录](https://www.luogu.com.cn/record/72586616)