10进制正整数转4位定长的36进制字符串

题目描述:

请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串。

36进制的规则为:“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;

举例说明:
1=“0001”
10=“000A”
20=“000K”
35=“000Z”
36=“0010”
100=“002S”
2000=“01JK”

  这是腾讯2015校园招聘技术类研发笔试题中的一题,给出自己的答案,欢迎拍砖。

solution:

string convert(int x)
{
    string res;
    if(x < 0)
        return res;
    if(x > 1679615)
        return "ZZZZ";
    char map[36] = {'0','1','2','3','4','5','6','7','8','9',
        'A','B','C','D','E','F','G',
        'H','I','J','K','L','M','N',
        'O','P','Q','R','S','T',
        'U','V','W','X','Y','Z'
    };
    int weight = 36*36*36;
    for (int i = 0;i < 4;++i)
    {
        int tmp = x / weight;
        res += map[tmp];
        x -= tmp * weight;
        weight /= 36;
    }
    return res;
}
原文地址:https://www.cnblogs.com/gattaca/p/4399090.html