当前位置: 移动技术网 > IT编程>开发语言>Java > 问题1020:最小回文数

问题1020:最小回文数

2020年07月15日  | 移动技术网IT编程  | 我要评论

最小的回文数

描述

回文数是从前往后和从后往前得到的数是相同的。
现给你一个正整数N,请你找到比N大的最小的那个回文数P。

(利用输出回文数的原理进行寻找)

输入

输入包含多组测试数据。
每组输入一个正整数N,N不超过10000位,并且N不包含前导0。

输出

对于每组输入,输出比N大的最小的那个回文数P。

输入样例 1

44
3
175

输出样例 1

55
4
181
字符模拟
#include <cstdio>
#include <cstring>
#define N 10001
char s[N];
using namespace std;
int main(){
    while ( ~scanf("%s",s)){
        int len=strlen(s);
        int flag=0,i;
        for(i=len/2-1;i>=0;--i){
            if(s[i]>s[len-1-i]){flag=1;break;}
            else if(s[i]<s[len-1-i]){ flag=-1;break;}
        }
        if(flag!=1){//前半串要加1
            //s[(len-1)/2]++;
            for(i=(len-1)/2;i>=0;--i){//199 191 999
                s[i]++;
                if(s[i]>'9'){
                    s[i]='0';
                }else break;
            }
            if(s[0]=='0'){//999 9999
                s[0]='1';
                len++;
                s[len/2]='0';
            }
        }
        for(i=0;i<len/2;++i)
            printf("%c",s[i]);
        for(i=(len+1)/2-1;i>=0;--i)
            printf("%c",s[i]);
        printf("\n");
    }
    return 0;
}

 

本文地址:https://blog.csdn.net/qq_45748941/article/details/107348091

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网