B3619 题解

Jerrlee✅

2022-03-28 08:01:34

Solution

题意

给一个 10 进制数 n,将其转化为 x 进制。

思路

把每个十进制数用整形数读入,进行数位分离,对于每一种情况打表,一一对应转化成字符串,存入到 sum 这个字符串中即可。

注意特判数字为 0 的情况。

推荐练习题:P1143,可以参考我的 另一篇题解 AC 那题。

代码

#include<bits/stdc++.h>
using namespace std;
string ten_to_anything(int n,int s){
    if(s==0) return "0";
    int r,q=s;
    string sum;
    while(q!=0){
    r=q%n;
    q=q/n;
    char a;
    switch(r){
        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 10:a='A';break;
        case 11:a='B';break;
        case 12:a='C';break;
        case 13:a='D';break;
        case 14:a='E';break;
        case 15:a='F';break;
        case 16:a='G';break;
        case 17:a='H';break;
        case 18:a='I';break;
        case 19:a='J';break;
        case 20:a='K';break;
        case 21:a='L';break;
        case 22:a='M';break;
        case 23:a='N';break;
        case 24:a='O';break;
        case 25:a='P';break;
        case 26:a='Q';break;
        case 27:a='R';break;
        case 28:a='S';break;
        case 29:a='T';break;
        case 30:a='U';break;
        case 31:a='V';break;
        case 32:a='W';break;
        case 33:a='X';break;
        case 34:a='Y';break;
        case 35:a='Z';break;
    }
    sum.insert(0,1,a);
    }
    return sum;
}
int main(){
    int m;
    int s;
    cin>>s>>m;
    cout<<ten_to_anything(m,s);
}

AC 记录