洛谷—— 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){;}          
相關文章
相關標籤/搜索