牛客题霸--进制转换
进制转换
https://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1?tpId=117&&tqId=35037&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
牛客题霸--进制转换
题目链接
Solution
进制转换的方法较为经典。
对于一个十进制的是数,每次对M取模,然后除以M(M为转换后的进制)即可得到M进制数。
因为M进制的数第一位时,第二位时
,第三位
所以如果10进制的数n大于(k是最大的,即
)则说明第k+1位上必定是
,然后让
依次类推即可。
对于代码实现,可以反过来,不断模M,除以M即可,详见代码。
Code
class Solution {
public:
string solve(int M, int N) {
int f = 1;
string tmp, ans;
char str[20] = {"0123456789ABCDEF"};
if (M < 0) M = -M, f = -1;
while (M) {
tmp.push_back(str[M % N]);
M /= N;
}
if (f == -1) ans.push_back('-');
for (int i = tmp.size() - 1; i >= 0; --i) ans.push_back(tmp[i]);
return ans;
}
};
vivo公司福利 368人发布