洛谷——P1609 最小回文数

2017-11-26 来源: QSZIO 发布在  https://www.cnblogs.com/z360/p/7900772.html

题目描述

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

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

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

满足这样条件的回文数很多,你的任务是输出其中最小的一个。

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1: 复制

44
输出样例#1: 复制

55

说明

50%的数据,N<10^9

100%的数据,N<10^100

40分模拟

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 110
using namespace std;
char ch[N];int l;
int main()
{
    cin>>ch+;ch[]=';
    l=strlen(ch+);
    ==)
    {
        ;i>=;i--)
        {
            ')
             ch[i-]+=(ch[i]-,ch[i]=(ch[i]-+';
            else
            {
                ]+=;
                else break;
            }
        }
        ]!=')
        {
            ;i<=l+;i++)
             printf(");
            ;
        }
        ;i<=l/;i++)
         printf("%c",ch[i]);
        ;i>=;i--)
         printf("%c",ch[i]);
    }
    else
    {
        +]!=+]+=;
        else
        {
            ch[l/+]=]+=;
            ;i>=;i--)
            {
                ')
                 ch[i-]+=(ch[i]-,ch[i]=(ch[i]-+';
                else break;
            }
        }
        ]!=')
        {
            ;i<=l+;i++)
             printf(");
            ;
        }
        ;i<=l/;i++)
         printf("%c",ch[i]);
        printf(+]);
        ;i>=;i--)
         printf("%c",ch[i]);
    }
    ;
}

40分模拟

题解

var
  s,s1:string;
  i,len:longint;
begin
  readln(s);
  len:=length(s);
  s1:=s;
   to len div  do
    s1[len-i+]:=s[i];
  if s1>s then begin write(s1); halt; end;
  i:=(len+) div ;
  ) do dec(i);
   then begin write();  to len- ); write(); halt; end
          to (len+) div  '; end;
   to len div  do
    s[len-i+]:=s[i];
  write(s);
end.

相关文章