游客 Signup | Login
中文 | En

2619 - 删数问题

键盘输入一个高精度的正整数n(<=240位),


去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。

<br />

编程对给定的n和s,寻找一种方案,使得剩下的数最小。

Input

Output

Examples

Input

178543
4

Output

13

Solution C

#include<stdio.h>
#include<string.h>
int main()
{
	char a[250],c;
	int n,i,stl,j=0,max;
	gets(a);
	scanf("%d",&n);
	stl=strlen(a);
	while(n>0)
	{
		c=a[j];
		max=j;
		for(i=j+1;i<stl;i++)
		{
			if(a[i]>c)
			{
				//printf("%c",a[i]);
				c=a[i];
				max=i;
			}
		}
	//	printf("\n");
	//	printf("%c\n",a[max]);
		a[max]='0'-8;
		if(max==j)
		{
			j++;
		}
		n--;
	}
	for(i=0;i<stl;i++)
	{
		if(a[i]!='0'-8)
			printf("%c",a[i]);
	}
}

Solution C++

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
	string n;
	int s;
	cin>>n>>s;
	int len=n.length();
	for(int i=1;i<=s;i++)
	{
		for(int j=0;j<len-1;j++)
		{
			if(n[j]>n[j+1])
			{
				n.erase(j,1);
				break;
			}
		}
		len--;
	}
	for(int i=0;i<len;++i)
	{
		if(n[i]!='0')
			cout<<n[i];
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题