B. Anton and currency you all know
time limit per test
memory limit per test
input
output
currency you all know
currency you all know against the burle for tomorrow. Now Anton knows that tomorrow the exchange rate will be an even number, which can be obtained from the present rate by swapping exactly two distinct digits in it. Of all the possible values that meet these conditions, the exchange rate for tomorrow will be the maximum possible. It is guaranteed that today the exchange rate is an odd positive integer n. Help Anton to determine the exchange rate of currency you all know
Input
n — the exchange rate of currency you all know for today. The length of number n's representation is within range from 2 to 105, inclusive. The representation of n
Output
- 1.
currency you all know
Sample test(s)
input
527
output
572
input
4573
output
3574
input
1357997531
output
-1
考虑所有的换法,让高位的数尽量大。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define MAXL (100000+10)
long long mul(long long a,long long b){return (a*b)%F;}
long long add(long long a,long long b){return (a+b)%F;}
long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}
typedef long long ll;
char s[MAXL];
int main()
{
// freopen("Anton.in","r",stdin);
// freopen(".out","w",stdout);
scanf("%s",s+1);
int n=strlen(s+1);
For(i,n)
{
if ((s[i]-'0')%2==0&&s[i]<s[n])
{
swap(s[i],s[n]);
printf("%s",s+1);
return 0;
}
}
ForD(i,n)
{
if ((s[i]-'0')%2==0)
{
swap(s[i],s[n]);
printf("%s",s+1);
return 0;
}
}
cout<<"-1"<<endl;
return 0;
}