进制转换通用解法

数制转换

http://www.nowcoder.com/questionTerminal/8ef02ef8571b417d8c311a87861f7a03

蒟蒻的我...

#include<bits/stdc++.h>
using namespace std;

int charToNumber(char c)
{
    switch(c)
    {
        case '0':return 0;
        case '1':return 1;
        case '2':return 2;
        case '3':return 3;
        case '4':return 4;
        case '5':return 5;
        case '6':return 6;
        case '7':return 7;
        case '8':return 8;
        case '9':return 9;
        case 'A':return 10;
        case 'B':return 11;
        case 'C':return 12;
        case 'D':return 13;
        case 'E':return 14;
        case 'F':return 15;
        case 'a':return 10;
        case 'b':return 11;
        case 'c':return 12;
        case 'd':return 13;
        case 'e':return 14;
        case 'f':return 15;
    }
    return 0;
}
char  numberToChar(int n)
{
     switch(n)
    {
        case 0:return '0';
        case 1:return '1';
        case 2:return '2';
        case 3:return '3';
        case 4:return '4';
        case 5:return '5';
        case 6:return '6';
        case 7:return '7';
        case 8:return '8';
        case 9:return '9';
        case 10:return 'A';
        case 11:return 'B';
        case 12:return 'C';
        case 13:return 'D';
        case 14:return 'E';
        case 15:return 'F';
     }
    return '0';
}
//进制转换
string converse(int n,string str,int m)
{
    int carry,k;//高位向低位的进位
    string res="";
    for(int i=0;i<str.size();)
    {
        carry=0;
        for(int j=i;j<str.size();j++)
        {
            k = (charToNumber(str[j])+carry*n)%m;
            str[j] = numberToChar((charToNumber(str[j])+carry*n)/m);
            carry=k;
        }
        res+=numberToChar(carry);
        while(str[i] == '0') i++;
    }
    reverse(res.begin(),res.end());
    return res;
}
int main()
{
    int n,m;
    string str;
    while(cin>>n>>str>>m)
    {
        cout<<converse(n,str,m)<<endl;
    }
}
全部评论

相关推荐

不对是145个人…嗯…&nbsp;大家都没发现秋招提前批来了嘛..笑死我了
牛客39712426...:投了也是浪费时间,之前投米实习,除了浪费我时间写笔试题没有任何反馈,懒得投了
26届校招投递进展
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-29 20:12
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务