您的位置:首页 > 运维架构

openjudge 最小新整数

2015-12-19 21:44 288 查看

3528:最小新整数

查看
提交
统计
提问

总时间限制: 1000ms 内存限制: 65536kB

描述

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。

现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?

例如: n = 9128456, k = 2, 则生成的新整数最小为12456

输入第一行t, 表示有t组数据;

接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。
输出t行,每行一个数字,表示从n中删除k位后得到的最小整数。
样例输入
2
9128456 2
1444 3


样例输出
12456
1


#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

int n,m,len,i,j,num,k,l;

int ans[20];

char s[20],s1[20];

int main()

{

scanf("%d\n",&n);

for (l=1;l<=n;l++)

{

scanf("%d%d",&num,&m);

int mm=m;

sprintf(s,"%d",num);

len=strlen(s);

for (i=1;i<=m;i++)

{

for (j=0;j<len-1;j++)

if (s[j]>s[j+1])//如果有比后一位大的数,那么直接把这一位之后的向前移一位,覆盖掉即可,如果当前数列已经满足递增了,那么在删位时,直接忽略掉最后一位即可

{

for (k=j;k<len-1;k++)

s[k]=s[k+1];

break;

}

len--;

}

for (i=0;i<len;i++)

printf("%c",s[i]);

printf("\n");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: