zoukankan      html  css  js  c++  java
  • 洛谷 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;
    }

  • 相关阅读:
    关于面向对象和面象过程的一些感想
    面向对象之旅软件生命周期
    函数参数栈传递
    看完后停下来想想我们究竟在追求什么???
    面向对象之旅设计与设计原则
    [译]多重继承和虚继承的内存布局
    61条面向对象设计的经验原则
    数据库设计14个技巧(转)
    js的tween
    三、windows8 store
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10403933.html
Copyright © 2011-2022 走看看