又一道站外题
  • 板块题目总版
  • 楼主Dpf20120621
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/27 11:42
  • 上次更新2024/4/27 14:09:06
查看原帖
又一道站外题
922781
Dpf20120621楼主2024/4/27 11:42

【题目描述】

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

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

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

【输入】

第一行tt, 表示有tt组数据;

接下来tt行,每一行表示一组测试数据,每组测试数据包含两个数字n,kn,k。

【输出】

tt行,每行一个数字,表示从nn中删除kk位后得到的最小整数。

【输入样例】

2
9128456 2
1444 3

【输出样例】

12456
1

代码

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n,T;
	string s;
	cin>>T;
	while(T--){
		cin>>s>>n;
		while(n){
			int i = 0;
			for(;i<s.length()-1;i++){
				if(s[i] > s[i+1]){
					s.erase(i,1); 
					n--;
					break;
					}
			}
			if(i == s.length() - 1) break;
		}
		while(n--){
			s.erase(s.length()-1,1);
		}
		int p = 0;
		while(s[p]=='0' && p < s.length()-1) p++;
		for(int i = p; i < s.length();i++) cout << s[i];
		cout<<endl;
	}
	
	return 0;
}

80分

2024/4/27 11:42
加载中...