G - Ania and Minimizing(模拟)

Ania has a large integer S. Its decimal representation has length n
and doesn’t contain any leading zeroes. Ania is allowed to change at most k digits of S. She wants to do it in such a way that S still won’t contain any leading zeroes and it’ll be minimal possible. What integer will Ania finish with?
Input
The first line contains two integers n and k(1≤n≤200000, 0≤k≤n) — the number of digits in the decimal representation of S and the maximum allowed number of changed digits.The second line contains the integer S . It’s guaranteed that S has exactly n digits and doesn’t contain any leading zeroes.Output the minimal possible value of S which Ania can end with. Note that the resulting integer should also have n digits.
Examples
Input
5 3
51528
Output
10028
Input
3 2
102
Output
100
Input
1 1
1
Output
0
输入一个整数,最多改变K个数,使最小且无前导0
第一位最小1,其他0

#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
char a[200010];
int main()
{
	int n,k;
	cin>>n>>k>>a;
	if(n==1)
	{
	 if(k==0)
	  cout<<a;
	 else
	  cout<<0;
	}
	else
	{
	 if(k==0)
	  cout<<a;
	 else
	 {
	  if(a[0]!='1') k--;
	  a[0]='1';
	  int tip=1;
	  while(tip<n&&k)
	  {
	  	if(a[tip]!='0')
	  	{
	  	 a[tip]='0';k--;	
		}
		tip++;
	  }
	  cout<<a;	
	 }	
	}
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值