删数问题

来源:互联网 发布:nginx 经典书籍 编辑:程序博客网 时间:2024/06/05 19:00

Problem Description

 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。

Input

  输入有多组 每组包括原始数n,要去掉的数字数s;

Output

 输出去掉s个数后最小的数

Example Input

178543  4

Example Output

    13



#include <stdio.h>#include <string.h>char a[102],b[102];int main(){    int n,i,s,f,ff,j,k;    while(scanf("%s %d",a, &s) != EOF)    {        ff=f=k=j=0;        while(s--)        {            i=0;            while(i < strlen(a)&&a[i] <= a[i+1])            {                i++;            }            while(i < strlen(a))            {                a[i]=a[i+1];                i++;            }        }        if(a[0]=='0')        {            for(i=0;i<strlen(a);i++)            {                if(a[i]!='0')                {                    ff=1;                    f=1;                }                if(ff==1)                {                    b[k]=a[i];                    k++;                }            }            b[k]='\0';        }//前面有0去掉        if(f==0)            printf("%s\n",a);        else            printf("%s\n",b);    }}/////////////////////
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){    char str[101];    int s, i, j;    while(~scanf("%s %d",str, &s))    {        while(s>0)        {        i=0;        while(i<strlen(str)&&str[i]<=str[i+1])        i++;        for(j=i;j<strlen(str);j++)        str[j]=str[j+1];        s--;        }        i=0;        while(str[i]=='0'&&str[i]!='\0')        i++;        if(str[i]=='\0')        printf("0");        while(str[i]!='\0')        printf("%c",str[i++]);        printf("\n");        memset(str,'\0',sizeof(str));    }    return 0;}


1 0
原创粉丝点击