1 条题解

  • 0
    @ 2085-1-26 9:59:05

    【例47.2】 转进制

    解题思路

    递归先输出X/M的高位部分,再输出X%M的当前最低位。余数0~15使用0~9、A~F映射。

    正确性说明

    计算规则直接来自题目定义。按所述顺序处理时,已完成部分的结果被准确保存在累加量、计数或当前状态中;下一步只加入新增贡献。最终得到完整要求的结果。

    易错点

    X=0需输出单个0;基数应为2~16。

    复杂度

    D位,时间O(D),递归栈O(D)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    void printBase(long long x, int m) {
        if (x >= m)
            printBase(x / m, m);
        cout << "0123456789ABCDEF"[x % m];
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long x;
        int m;
        cin >> x >> m;
        printBase(x, m);
        cout << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    324
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者