C.幸运数字Ⅲ
链接:
https://www.nowcoder.com/acm/contest/70/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 }
溜了,去写别的了。