删数问题

删数问题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

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

Input

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

Output

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

Sample Input

178543  4

Sample Output

13


#include<stdio.h>
#include<string.h>


int main(void)
{
    int i, s, k, len;
    char a[200];


    while(~scanf("%s %d", a, &s))
    {
        for(k = 1; k <= s; k++)
        {
            len = strlen(a);
            i = 0;


            while(i < len - 1&& a[i] <= a[i + 1])
            {
                i++;
            }


            while(i < len) //这里不能写i < len - 1;因为最后一个数还要消失,只能是最后一个数 == 下一个‘\0’
            {
                a[i] = a[i + 1];
                i++;
            }
        }


        len = strlen(a);
        i = 0;


        while(i < len && a[i] == '0')
        {
            i++;
        }


        if(i < len)
        {
            while(i < len)
            {
                printf("%c", a[i]);
                i++;
            }


            printf("\n");
        }


        else
        {
            printf("0\n");
        }
    }


    return 0;
}

猜你喜欢

转载自blog.csdn.net/eider1998/article/details/80214674