1 条题解

  • 0
    @ 2026-2-1 16:10:25
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        string n; // 存储输入的高精度数字(用字符串避免溢出)
        int s; // 需要删除的位数
        cin >> n >> s; // [1] 输入数字字符串和删除位数
        
        // [2] 贪心删除:每次删除1个字符,共删除s次
        for(int i = 1; i <= s; i++){
            // 遍历字符串,找到第一个比右侧字符大的位置
            for(int j = 0; j < n.size(); j++){
                if(n[j] > n[j+1]){
                    n.erase(j, 1); // 删除该位置字符,使剩余数字尽可能小
                    break; // 找到一个就退出本轮,进入下一次删除
                }
            }
        }
        
        // [3] 去除前导零并输出结果
        for(int i = 0; i < n.size(); i++){
            if(n[i] != '0') // 跳过前导的0,直到找到第一个非0字符
                cout << n[i];
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1034
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    2
    已通过
    1
    上传者