思路:简单的推理一下,对于正常的情况只要从左到右暴力判断就行。
对于47数字很多杂糅的话,我们只需要判断如果s[i-1]==4&&s[i+1]==7的话
如果s[i]==4且i是偶数且k此时是奇数s[i]变成7;
如果s[i]==7且i是偶数且k此时是奇数s[i]变成4;
#include<bits/stdc++.h>
#define debug(a) cout << #a << " " << a << endl
#define LL long long
#define ull unsigned long long
#define PI acos(-1.0)
#define eps 1e-6
const int N=1e5+7;
using namespace std;
char s[N];
int main ()
{
//yyy_3y
//freopen("1.in","r",stdin);
LL m,k; scanf("%lld%lld",&m,&k);
scanf("%s",s+1);
int len=strlen(s+1);
for(int i=2;i<=len && k;i++){
if(s[i-1]=='4' && s[i+1]=='7'){
if(s[i]=='4' && !(i&1)){
if(k&1) s[i]='7';
break;
}
else if(s[i]=='7' && !(i&1)) {
if(k&1) s[i]='4';
break;
}
}
if(s[i-1]-'0'==4 && s[i]-'0'==7){
if(i&1) s[i-1]='7';
else s[i]='4';
k--;
}
}
printf("%s",s+1);
return 0;
}