趣味程序设计_求对称数

题目描述

如果给定一个对称数n,请你求出大于n的最小对称数(即这个数从左向右读和从右向左读是完全一样的)。

输入

第一行输入t(0

接下来的t行,每行输入一个n(0

输出

与输入相对应,每行输出一个大于n的最小对称数m。

样例输入

6
1
11
99
789987
123454321
999999999

样例输出

2
22
101
790097
123464321
1000000001
思路:求一个回文数的下一个最下回文数
1.数据的输入用字符数组,便于处理每一位数字。
2.对数据的位数分奇数偶数处理
奇数:取一半加中间数。
偶数:取一半。
然后对取的数+1,再进行输出,输出的时候注意特殊数据
#include 
#include
#include
using namespace std;
char s[500];
int str[500],mid,num,output[500];
int  judge(int r)    //判断是否进位例:99+1=100或999+1=1000
{   int inum=0,i=0,result=r;
    while(r!=0)
    {
        r/=10;
        inum++;
    }
    if(num%2!=0)
     return inum>mid+1?1:0;
     else
    return inum>mid?1:0;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {   int sum;
        scanf("%s",s);
         num=strlen(s);
        for(int i=0;i

你可能感兴趣的:(ACM_数字处理与数论,ACM_字符串)