1 条题解

  • 0
    @ 2085-7-10 19:43:57

    【例72.2】 取出整数的一部分

    解题思路

    用字符串保留n。若|k|大于位数输出Error;k>0截前k位,k<0截后-k位,k=0全部保留。结果转标准数字串去前导零。

    正确性说明

    依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。

    易错点

    负k不是倒序截取,只取后缀原顺序;全零输出0。

    复杂度

    时间O(L),空间O(L)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        string s;
        int k;
        cin >> s >> k;
        if (abs(k) > int(s.size())) {
            cout << "Error\n";
            return 0;
        }
        string t = k > 0 ? s.substr(0, k) : k < 0 ? s.substr(s.size() + k) : s;
        size_t p = t.find_first_not_of('0');
        cout << (p == string::npos ? "0" : t.substr(p)) << "\n";
        return 0;
    }
    
    • 1

    信息

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