题目描述:
请设计一个函数可以把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;}