期望得分:100+30+60=190

实际得分:10+0+55=65

 

2017 国庆湖南 Day3

到了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;
}
View Code

相关文章: