键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
输入两个数字,分别为原始数n,要去掉的数字数s (s < n)。
Output
输出去掉s个数后最小的数
Sample
Input
178543 4
Output
13
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int main()
{
char s[N];
int n;
while(~scanf("%s%d",s,&n))
{
int len = strlen(s);
while(n--)
{
for(int i=0;i<len;i++)
{
if(s[i]>s[i+1])
{
for(int j=i;j<len;j++)
{
s[j]=s[j+1];
}
len--;
break;
}
}
}
len=strlen(s);
while(len>1&&s[0]=='0')
{
for(int i=0; i<len; i++)
{
s[i]=s[i+1];
}
len--;
}
printf("%s\n",s);
}
return 0;
}
该代码实现了一个程序,输入一个高精度正整数n和要去掉的数字个数s,通过比较相邻数字大小并删除较大者,找到一种方案使剩余数字组成的数最小。在处理过程中,确保了结果仍为正整数且不包含前导零。
1069

被折叠的 条评论
为什么被折叠?



