SDUT 2072 删数问题

我做这个题了解到的是要注意的是删除过程中可能会使原来包含0的数字串变成若干个以0开始的序列,当遇到数字串首位是0的时候,把高位的0去掉。

题目描述

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

输入

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

输出

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

示例输入

178543  4

示例输出

13


View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 void main()
 4 {
 5     int n,i,j;
 6     char a[101];
 7     while(scanf("%s",a)!=EOF)
 8     {
 9         scanf("%d",&n);
10         while(n)
11         {
12             i=0;
13             while(i<strlen(a)&&a[i]<=a[i+1])
14                 i++;
15             while(i<strlen(a))
16             {
17                 a[i]=a[i+1];
18                 i++;
19             }
20             n--;
21         }
22         for(i=0;i<strlen(a);i++)
23         {
24             if(a[i]!='0')
25             {
26                 printf("%c",a[i]);
27                 break;
28             }
29         }
30         for(j=i+1;j<strlen(a);j++)
31             printf("%c",a[j]);
32         puts("");
33             
34         
35         
36     }
37 }

 

posted @ 2012-05-27 09:51  时光旅行的懒猫  阅读(431)  评论(0编辑  收藏  举报