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'); } } } }