牛客题霸--进制转换

牛客题霸–进制转换

题目链接

Solution

进制转换的方法较为经典。
对于一个十进制的是数,每次对M取模,然后除以M(M为转换后的进制)即可得到M进制数。
因为M进制的数第一位时 M 0 M^0 M0,第二位时 M 1 M^1 M1,第三位 M 2 ⋯ M^2 \cdots M2
所以如果10进制的数n大于 M k M^k Mk(k是最大的,即 n < M k + 1 nn<Mk+1)则说明第k+1位上必定是 n M k \frac{n}{M^k} Mkn,然后让 n = n % M k n=n \% M^k n=n%Mk 依次类推即可。
对于代码实现,可以反过来,不断模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;
    }
};

你可能感兴趣的:(c++,编程语言,leetcode)