C++每日一练11.进制转换

Posted 鱼酱2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++每日一练11.进制转换相关的知识,希望对你有一定的参考价值。

给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 ‘A’ 表示此位为 10 , ‘B’ 表示此位为 11 。
若 M 为负数,应在结果中保留负号。
数据范围: M<=10^8 ,2≤N≤16
要求:空间复杂度O(M)O(M),时间复杂度 O(M)O(M)

class Solution 
public:
    string solve(int M, int N) 
            string t = "0123456789ABCDEF";
            string ans = "";
            if(M==0)return "0";
            bool fu = false;//记录一下M是不是负数
            if(M<0)fu = true;M=-M;//如果是负数,换成正数计算,最后再加上符号位
            while(M)
            
                 ans += t[M%N];
                 M/=N;
            
            if(fu)ans+="-";
            reverse(ans.begin(), ans.end());
            return ans;
    
;

以上是关于C++每日一练11.进制转换的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯C/C++每日一练之十进制转换成十六进制

每日一练----1.20 oj总结

CSDN|每日一练c++难题-大数加法

CSDN|每日一练c++难题-大数加法

「 每日一练,快乐水题 」504. 七进制数

「 每日一练,快乐水题 」剑指 Offer 15. 二进制中1的个数