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 }