期望得分:100+30+60=190
实际得分:10+0+55=65
到了233 2是奇数位 或223 第2个2是偶数位就会223 、233 循环
#include<cstdio> #define N 1000001 using namespace std; char s[N+5]; int main() { freopen("trans.in","r",stdin); freopen("trans.out","w",stdout); int n,k; bool ok; while(scanf("%d%d",&n,&k)!=EOF) { scanf("%s",s+1); ok=false; for(int i=1;i<n;i++) { if(s[i]=='2' && s[i+1]=='3') { k--; if(s[i-1]=='2') { if(i&1) s[i+1]='2'; else { for(int j=1;j<i;j++) printf("%c",s[j]); if(k&1) printf("2"); else printf("3"); for(int j=i+1;j<=n;j++) printf("%c",s[j]); ok=true; break; } } else if(s[i+2]=='3') { if(i&1) { for(int j=1;j<=i;j++) printf("%c",s[j]); if(k&1) printf("3"); else printf("2"); for(int j=i+2;j<=n;j++) printf("%c",s[j]); ok=true; break; } else s[i]='3'; } else { if(i&1) s[i+1]='2'; else s[i]='3'; } if(!k) break; } } if(!ok) for(int i=1;i<=n;i++) printf("%c",s[i]); printf("\n"); } return 0; }