加入数(insdata)
1000ms 256MB
本题请以文件输入输出方式进行提交,输入输出文件名是
insdata.in
/insdata.out
题目描述
有一个长度不超过20位的整数q(以字符串的形式给出),同时给出一个加入数字p,p可加入在整数的任何位置。加入之后,再删去一个数字,使剩下来的数最大。
例如:有整数: 1 2 3 4 5 6 7 8 ,P 为 5
得到的结果: 5 2 3 4 5 6 7 8
说明: 1 2 3 4 5 6 7 8 加入5之后成为: 5 1 2 3 4 5 6 7 8
再删去1最后得到: 5 2 3 4 5 6 7 8
输入格式
两行,第一行一个字符串q,第二行一个正整数p
输出格式
经过处理操作后,得到的满足要求的数。
样例
输入数据#1
12345678
5
输出数据#1
52345678
数据范围/约定
50%的数据,1≤q的长度≤3;
100%的数据,1≤q的长度≤20。
题解:
#include<bits/stdc++.h>
using namespace std;
bool f;
int main()
{
freopen("insdata.in", "r", stdin);
freopen("insdata.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string s, str;
char c, c1;
cin >> s;
cin >> c;
str = s;
int k = s.size() - 1;
for (int i = 0; i < s.size() - 1; i++)
{
if (s[i] < s[i + 1])
{
k = i;
break;
}
}
s.erase(k, 1);
for (int i = 0; i < s.size(); i++)
{
if (s[i] < c)
{
f = 1;
k = i;
break;
}
}
if (f == 0)
{
s = s + c;
}
else
{
s.insert(k, 1, c);
}
if (s > str)
{
cout << s;
}
else
{
cout << str;
}
}