标签:
题目描述:
请设计一个函数可以把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; }
标签:
原文地址:http://www.cnblogs.com/gattaca/p/4399090.html