zoukankan      html  css  js  c++  java
  • 整数去位

    题目描述

    键盘输入一个高精度的正整数N,去掉其中任意M个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和M寻找一种方案使得剩下的数字组成的新数最小。输出组成的新的正整数。

    输入数据均不需判错。如果去掉了某几个位后得到的新整数开头为0,保留0。

    输入

    第一行为高精度正整数N(N的长度不超过106位)
    第二行为M(0≤M≤N的长度)

    输出

    去掉M位后的最小新数。

    样例输入 Copy

    【样例1】
    505
    1
    【样例2】
    82386782
    3
    

    样例输出 Copy

    【样例1】
    05
    【样例2】
    23672

    解析:
    就是如果这一位大于他的后一位,把他去掉一定值增大
    注意要用一个栈循环去掉值
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<stack>
    using namespace std;
    const int maxn=1e6+100;
    string a;
    int v[maxn];
    int vis[maxn]; 
    int n;
    stack<char>q;
    char p[maxn];
    int main(){
        cin>>a>>n;
        int ma=0;
        q.push(a[0]);
        for(int i=1;i<a.size();i++){ 
            while(!q.empty()&&a[i]<q.top()&&n>0){
                q.pop();    
                n--;
            }
            q.push(a[i]); 
        }
        int cnt=0;
        while(!q.empty()){
            p[++cnt]=q.top();
            q.pop();
        }
        for(int i=cnt;i>=1;i--){
            cout<<p[i];
        }
        
    }
     
  • 相关阅读:
    Hack The Box——Traverxec
    Hack The Box——AI
    Hack The Box——Json
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    .net 面试题
    .net 面试题
    .net 面试题
  • 原文地址:https://www.cnblogs.com/lipu123/p/13971725.html
Copyright © 2011-2022 走看看