例如数字184392的最大的回文数是183381,数字34854的最大的回文数是34843
我们可以发现规律:对于位数是奇数的数字来说,例如28563的最大的回文数必然符合28*82的格式,对于位数是偶数的数字来说,例如184392,必然是18**81
#include<bits/stdc++.h>
using namespace std;
int main( )
{
string s,ans;
cin>>s;
if(s[0] == '0')
{
(0 , s.find_first_not_of('0'));
}
int n=();
if(n==0){
cout<<0<<endl;
return 0;
}
if(n==1){
cout<<s<<endl;
}
else if(!(n%2)){
char c=(s[n/2-1]>s[n/2])?s[n/2]:s[n/2-1];
s[n/2-1]=s[n/2]=c;
string temp=(0,n/2-1);
reverse((),());
(()+n/2+1,(),temp);
cout<<s<<endl;
}
else{
string temp=(0,n/2);
reverse((),());
ans=(0,n/2)+"*"+temp;
int i=n/2+1;
while(i<n&&s[i]==ans[i]){
i++;
}
if(i==n||s[i]>ans[i]){
ans[n/2]=s[n/2];
}
else{
ans[n/2]=s[n/2]-1;
}
cout<<ans;
}
return 0;
}