求回文数,不过数据量有点大,不能一个一个检测,需要找出回文数的规律,然后根据规律推,, #include<stdio.h> #include<string.h> #include<stdlib.h> int ten(int n) { int i,sum = 1; for( i = 1; i <= n; i++ ) sum *= 10; return sum; } int main(void) { int n,i,t,len,sum; int a[19];char s[25]; for( sum = 0, i = 2,a[0] = 0; i <= 18; i += 2 ) a[i] = sum = sum*10 + 18; for( i = 1; i <= 18; i+= 2) a[i] = a[i+1] - 9*ten(i/2); while( scanf("%d",&n) && n ) { if( n==1999999999 ) {printf("1000000000000000001/n");continue;} if( n==2000000000 ) {printf("1000000001000000001/n");continue;} for( i = 0; i <= 17; i++ ) if( n > a[i] && n <= a[i+1] ) break; t = n - a[i++] -1; sprintf(s,"%d",t+ten(i%2==0?(i/2-1):i/2)); len=strlen(s); if( i%2==1 ) { printf("%s",s); for( len-=2; len >=0; len--) printf("%c",s[len]); } else { printf("%s",s); for( len--; len >= 0; len--) printf("%c",s[len]); } printf("/n"); } return 0; }