C.幸运数字Ⅲ
这个题447和477是特殊的,其他的就没什么了。
代码:
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 #include<cmath>
5 #include<algorithm>
6 using namespace std;
7 const int maxn=1e5+10;
8 char s[maxn];
9 int vis[maxn];
10 int main(){
11 int n,k;
12 cin>>n>>k;
13 cin>>s+1;
14 memset(vis,0,sizeof(vis));
15 int num=0;
16 for(int i=1;i<=n;i++){
17 if(i+1<=n&&s[i]=='4'&&s[i+1]=='7'){
18 vis[i]=1;
19 num++;
20 }
21 }
22 //cout<<num<<endl;
23 if(num==0){
24 for(int i=1;i<=n;i++)
25 cout<<s[i];
26 cout<<endl;
27 }
28 else{
29 for(int i=1;i<=n;i++){
30 if(k==0)break;
31 if(vis[i]==1){
32 if(i%2==0){
33 if(s[i-1]=='4'){
34 if(k%2==0)break;
35 else{
36 s[i]='7';
37 break;
38 }
39 }
40 else {k--;s[i]='7';vis[i]=0;}
41 }
42 else{
43 if(s[i+2]=='7'){
44 if(k%2==0)break;
45 else{
46 s[i+1]='4';
47 break;
48 }
49 }
50 else{k--;s[i+1]='4';vis[i]=0;}
51 }
52 }
53 }
54 }
55 for(int i=1;i<=n;i++)
56 cout<<s[i];
57 cout<<endl;
58 }
溜了,去写别的了。