背景:1——WA:有一出少了break,还是惧怕时间没有自己出数据看看的错!
思路:fi全是奇数,输出-1,else if 全部偶数都大于最后一位数,让最右边的偶数和最后一位数交换;else 让最左边的比最后一位数打的偶数与最后一位数交换!
#include<stdio.h> #include<string.h> char str[100009]; int main(void){ while(~scanf("%s",str)){ int n=strlen(str); bool ok=false; for(int i=0;i < n-1;i++){if((str[i]-'0')%2 == 0) ok=true;} if(!ok) printf("-1\n"); else{ for(int i=0;i < n-1;i++){ if((str[i]-'0')%2 == 0 && str[i] < str[n-1]){ char key=str[i]; str[i]=str[n-1]; str[n-1]=key; ok=false; break; } } if(!ok) printf("%s\n",str); else{ for(int i=n-2;i >= 0;i--){ if((str[i]-'0')%2 == 0){ char key=str[i]; str[i]=str[n-1]; str[n-1]=key; printf("%s\n",str); break; } } } } } return 0; }
时间: 2024-10-12 19:56:19