Palindromes

Palindromes
HihoCoder - 1878
https://vjudge.net/problem/HihoCoder-1878/origin

当时主要问题在于,这个数很大,不太会处理。
我当时已经看出来它是多少就是多少,
1234直接就可以对称过去,队友代码写的是真巧妙~

//I 
#include <bits/stdc++.h>
#define inf 2333333333333333
#define N 1000010
#define p(a) putchar(a)
#define For(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
void in(int &x){
    int y=1;char c=getchar();x=0;
    while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
    while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    x*=y;
}
void o(int x){
    if(x<0){p('-');x=-x;}
    if(x>9)o(x/10);
    p(x%10+'0');
}
char s[N];
char ans[N];
int check(){
    int n=strlen(s+1);
    if(s[1]!='1') n++;
    int p=n*2-2;
    if(s[1]!='1'||(s[1]=='1'&&s[2]=='0')) p--;
    return p;
}
signed main()
{
    int t;
    in(t);
    while(t--){
        scanf("%s",s+1);
        int n=strlen(s+1);
        if(n==1&&s[1]=='1'){
            p('0');p('\n');
            continue;
        }
        int len=check();
        if(len%2==0){
            for(int i=2;i<=n;i++) p(s[i]);
            for(int i=n;i>=2;i--) p(s[i]);
            p('\n');
        }else{
            if(s[1]=='1'){
                s[2]='9';
                for(int i=2;i<=n;i++) p(s[i]);
                for(int i=n-1;i>=2;i--) p(s[i]);
                p('\n');
            }else{
                s[1]--;
                for(int i=1;i<=n;i++) p(s[i]);
                for(int i=n-1;i>=1;i--) p(s[i]);
                p('\n');
            }
        }
    }
}

 

posted @ 2020-09-23 20:22  WeiAR  阅读(152)  评论(0编辑  收藏  举报