洛谷—— P1609 最小回文数

https://www.luogu.org/problemnew/show/1609

题目描述

回文数是从左向右读和从右向左读结果同样的数字串。ios

例如:12一、44 和3是回文数,175和36不是。spa

对于一个给定的N,请你寻找一个回文数P,知足P>N。code

知足这样条件的回文数不少,你的任务是输出其中最小的一个。blog

输入输出格式

输入格式:ci

 

1行,一个正整数N。N的数值小于10^100,而且N没有前导0。get

 

输出格式:string

 

你的程序应该输出一行,最小的回文数P(P>N)。io

 

输入输出样例

输入样例#1:  复制
44
输出样例#1:  复制
55

说明

50%的数据,N<10^9class

100%的数据,N<10^100stream

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 string tmp,s;
 8 int n;
 9 
10 int Presist()
11 {
12     cin>>s;
13     tmp=s;    n=s.length();
14     for(int i=0; i<n>>1; ++i)
15         s[n-i-1]=s[i];
16     if(s>tmp) { cout<<s; return 0; }
17     for(int i=(n-1)>>1; i>=0; --i)
18         if(s[i]=='9') s[i]='0';
19         else { s[i]++; break; }
20     for(int i=0; i<n>>1; ++i)
21         s[n-i-1]=s[i];
22     if(s[0]=='0') s[0]='1',s+='1';
23     cout<<s;
24     return 0;
25 }
26 
27 int Aptal=Presist();
28 int main(int argc,char**argv){;}          
相关文章
相关标签/搜索