Codeforces #288 B

来源:互联网 发布:enum数据类型php 编辑:程序博客网 时间:2022/07/05 00:13

居然一直wa,也是醉了,原来把题目中的长度10^5看成是数字在10^5以下,默默地用了int再转化成字符串。。。。结果第10组就悲剧了。。。

题目还是要看清楚的。。。还有就是以为给的数可能是偶数····,结果题目清楚的说了只会是奇数。。。

思路:如果前面有比最后一个小的,让最后一个和最前面的那个偶数交换,如果没有,那么最后一个跟最后面的偶数交换。

#include<cstdio>#include<cstring>char s[100010];int is_even(int a){    if((a-'0')%2==0)    return 1;    return 0;}int main (){    while (scanf("%s",s)==1)    {        int i;        int flag=0;        int n=strlen(s);        for(i=0;i<n;i++)        {            if(is_even(s[i]))            {                flag=1;                break;            }        }        if(!flag)        printf("-1\n");        else{        for(i=0;i<n-1;i++)        {            if(is_even(s[i]) && s[i]-'0'<s[n-1]-'0')            {                int ch;                ch=s[i];                s[i]=s[n-1];                s[n-1]=ch;                break;            }        }        if(i==n-1)        {            for(i=n-2;i>=0;i--)            {                    if(is_even(s[i]))                    {                        int ch;                        ch=s[i];                        s[i]=s[n-1];                        s[n-1]=ch;                        break;                        }                }                    }        printf("%s\n",s);        }        memset(s,'\0',sizeof(s));    }    return 0;}


0 0