进制转换通用解法

数制转换

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;
    }
}
全部评论

相关推荐

03-28 14:34
中南大学 Java
网易互娱明天的笔试是在一天之内任意选时间作答,那不就等于说可以抄答案?那为什么要发笔试?美团也说不拿笔试卡人,那为什么要发笔试?觉得学生们很有时间是吗?&nbsp;还有那些笔试全A了没有进面的,笔试的意义到底在哪里?
no_work_no_life:网易互娱的笔试本来就很简单 美团的确实不按笔试刷人,但是笔试是捞人的重要依据,尤其对于双非学生……我一面的时候面试官直接说是看我笔试成绩还可以就把我捞起来了……
投递美团等公司6个岗位 >
点赞 评论 收藏
分享
一天代码十万三:这都不能算简历吧
点赞 评论 收藏
分享
我的名字是句号:接好运
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务