高精度整数去位去最小问题

Time Limit: 1 Seconds     Memory Limit: 32768 K

Total Submit:319     Accepted:85


Description

键盘输入一个高精度的正整数N,去掉其中任意M个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和M寻找一种方案使得剩下的数字组成的新数最小。输出组成的新的正整数。(不超过240位)

输入数据均不需判错。

如果去掉了某几个位后得到的新整数开头为0,保留0。

Input

本题有多组测试数据,每组测试数据占一行。

一个高精度正整数N(N不超过240位)一个正整数M。(M为不大于N的长度的正整数)

N,M由一个空格分开。

Output

新的正整数,每组数据的输出占一行。不要多余的空白.

Sample Input

456547 1
            456547 2
            456547 3
            7773359 2
            103 1

 

Sample Output

45547
            4547
            447
            73359
            03
解答:
            
#include "stdio.h"
char N[240];
int M;
void out(int b)
{
    
while(N[b]!='\0')
    
{
    N[b]
=N[b+1];
    b
++;
    }

}

int main()
{
    
int i=0,j=1,min=0;
    
while(1)
    
{
    scanf(
"%s %d",N,&M);
    
while(M--)
    
{
        min
=i;
        
while(N[j]!='\0')
        
{
        
if(N[i]>N[j])
        
{
        min
=i;
        i
++;
        
break;
        }

        
else if(N[i]<N[j])
        
{
        i
++;
        j
++;
        }

        
else
        
{
        j
++;
        }

    }

    i
=0;
    j
=i+1;
    
out(min);
    }

    
if(N[0]=='\0')
        printf(
"%d",0);
    
else
        printf(
"%s\n",N);
}

    
return 0;
            
}
posted on 2008-07-13 19:24  Venice Ding  阅读(411)  评论(0编辑  收藏  举报