1 条题解

  • 0
    @ 1981-1-3 3:39:55

    练72.2  n-1位数

    解题思路

    把数作为字符串读入,删除首字符,再去掉剩余串的前导0;剩余全0则输出0。

    正确性说明

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

    易错点

    题目n-1位指除去最高位后的后缀,不是n减1。

    复杂度

    总数字位数D,时间O(D),空间O(最长位数)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int M;
        cin >> M;
        while (M--) {
            string s;
            cin >> s;
            s.erase(s.begin());
            size_t p = s.find_first_not_of('0');
            cout << (p == string::npos ? "0" : s.substr(p)) << "\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    474
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    0
    已通过
    0
    上传者