统计前半个回文串
#include <bits/stdc++.h> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define ForD(i,n) for(int i=n;i;i--) #define ForkD(i,k,n) for(int i=n;i>=k;i--) #define Rep(i,n) for(int i=0;i<n ;i++) #define MAXN (1000000000+10) int n; int s[100000]; int main() { // freopen("J.in","r",stdin); while(scanf("%d",&n)!=EOF&&n) { int t=1; //位数 int p=9; while (n>p) { t++; n-=p; if (t>=3&&t%2==1) { p*=10; } } int len=t/2+t%2; // cout<<p<<endl; /* int a=(n-1)/(p/9)+1; */ int k10=p/9; n+=k10-1; ForD(i,len) { s[i]=n%10; n/=10; } For(i,len) printf("%d",s[i]); if (t%2) len--; ForD(i,len) printf("%d",s[i]); // cout<<n<<endl; printf("\n"); } return 0; }