最小新整数
链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1231
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
给定一个十进制正整数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> #include<algorithm> #include<cmath> using namespace std; int main() { int t; cin>>t; while(t--) { string s; int n; cin>>s>>n; int l=s.length(); n=l-n; int i=0; while(l>n) { while(s[i]<=s[i+1])i++; if(s[i]>s[i+1]) { l--;for(int j=i;j<l;j++)s[j]=s[j+1]; } i--; if(i==l)break; } i=0; while(s[i]=='0')i++; for(;i<n;i++)printf("%c",s[i]); cout<<endl; } }