洛谷 P1106 删数问题

     一定要认真审题   “去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数”   也就是说

输入:7893400   4     输出:300  (00在原顺序中位于3后边)

输入:7890034   4     输出:3   (003的00不会输出)

     把要修改的数字当做字符串输入,就可以把每一位数保存在数组里了

     若各位数字递增,就删除最后一个数字,否则删除第一个递减区间的首数字

#include<cmath>
#include<iostream>
#include<cstring>         //调用strlen函数
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
      char n[1000000];
      int k,i;
      scanf("%s",n);
      cin>>k;
      int len=strlen(n);        //strlen函数计算数组长度
      for(i=1;i<=k;i++)
      {
         for(int j=0;j<=len-1;j++)
              if(n[j]>n[j+1])
              {
                  for(int s=j;s<=len-1;s++)
                  n[s]=n[s+1];
                  break;
               }
         len--;
      }
      i=0;
      while(i<=len-1&&n[i]=='0') i++;      //首位为零空掉


      if(i==len) printf("0");          //若删完后只剩下0,输出0
      else
      for(int j=i;j<=len-1;j++)      //从首位非零数字开始输出
      cout<<n[j];

      return 0;
}

猜你喜欢

转载自www.cnblogs.com/xiaoyezi-wink/p/10403933.html