赞
踩
P1609 最小回文数
链接: link.
题解:将前半部分对称到字符串后半部分,就可以得到回文串,如果该回文串小于给出的字符串,从中间加1即可,注意有9的情况,当中间是9时,中间变0同时前后加1。注意特判全为9的情况,需要加位。
#include<bits/stdc++.h> using namespace std; char s[1000],a[1000]; int main() { cin>>s; int n=strlen(s)-1; int i,flag=0; //s[0]='0',a[0]='0'; for(i=0;i<=n-i;i++)a[i]=s[i],a[n-i]=s[i]; if(strcmp(a,s)>0) { } else { for(i=n/2;i>=0;i--) { if(a[i]=='9')a[i]='0'; else { a[i]++; break; } } for(i=0;i<=n/2;i++)a[n-i]=a[i]; if(a[0]=='0')flag=1,a[n]='1'; } if(flag==1)cout<<"1"; cout<<a; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。