1 条题解

  • 0
    @ 1972-12-2 5:18:48

    练72.3  A+B的结果

    解题思路

    先求和转数字串,从左到右输出;在当前位置右侧还剩3的倍数位且当前位置不是首位时,先插逗号。

    正确性说明

    依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。

    易错点

    0正常输出0,首位前不能有逗号。

    复杂度

    位数D,时间O(D),空间O(D)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long a, b;
        cin >> a >> b;
        string s = to_string(a + b);
        for (size_t i = 0; i < s.size(); i++) {
            if (i > 0 && (s.size() - i) % 3 == 0)
                cout << ",";
            cout << s[i];
        }
        cout << "\n";
        return 0;
    }
    
    • 1

    信息

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