华师一附中OI组
标题:
P1106 删数问题
[打印本页]
作者:
倚窗倾听风吹雨
时间:
2018-8-20 11:51
标题:
P1106 删数问题
https://www.luogu.org/problemnew/show/P1106#sub
输入一个正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。输出去掉数字后组成的新的正整数。(N不超过240位)
输入:
输入文件有两行,分别为N和S(S<=N的长度)。
输出:
输出文件仅有一行,为去掉数字后得到的新数。
输入输出举例:
输入 987654321 5
输出 4321
作者:
倚窗倾听风吹雨
时间:
2018-8-20 11:51
#include<iostream>
#include<cstdio>
using namespace std;
string s;
int n,del,lens,i;
int main()
{
// freopen("del.in","r",stdin);
// freopen("del.out","w",stdout);
cin>>s;
cin>>n;
lens=s.size();
while(del<n)
{
for(i=0;i<lens;i++)
{
if(s[i]>s[i+1])
{
/// cout<<s[i]<<" "<<i<<" ";
lens--;
for(int j=i;j<lens;j++)
s[j]=s[j+1];
// for(int j=0;j<lens;j++)
// cout<<s[j];
// cout<<endl;
del++;
break;
}
}
if(i>=lens)break;
}
lens=lens-(n-del);
i=0;
while(s[i]=='0')
if((lens-i)>1)i++;
else break;
for(i=i;i<lens;i++)
cout<<s[i];
// fclose(stdin);
// fclose(stdout);
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2