toj 2621 Palindrome Numbers

toj 2621 Palindrome Numbers

 

#include  < iostream >
using   namespace  std;
typedef unsigned 
int   uint ;

char  str[  23  ] , df[  23  ];
int  len;
void  sort ( uint  p)
{
  
int i , j;
  
while (p)
  
{
    df[len 
++= p % 10 + '0';
    p 
/= 10;
  }

   
for (j = len - 1 , i = 0; j >= 0 ; ++ i , -- j)
       str[ i ] 
= df[ j ];
   str[ len ] 
= 0;
}


int  main()
{
    
uint f[ 20 ] = 
    
{
        
0 , 
        
1 , 10 , 
        
19 , 109 , 
        
199 , 1099 , 
        
1999 , 10999 , 
        
19999 , 109999 , 
        
199999 , 1099999 ,
        
1999999 , 10999999 , 
        
19999999 , 109999999 ,
        
199999999 , 1099999999 , 
        
1999999999 , 
    }
;

    
uint num[ 20 ] = 
    
{
        
0 , 
        
1 , 1 , 
        
10 , 10 , 
        
100 , 100 , 
        
1000 , 1000 , 
        
10000 , 10000 ,
        
100000 , 100000 , 
        
1000000 , 1000000 , 
        
10000000 , 10000000 ,
        
100000000 , 100000000 , 
        
1000000000 
    }
;
    
uint n , p;
    
int i , j;
    
    
while (scanf ("%u" , &n) , n)
    
{
      i 
= 1;
      len 
= 0;
      
while (n >= f[ i ] && i < 20)
          i 
++;
      i 
--;
      p 
= n - f[ i ] + num[ i ];
      sort (p);
      printf (
"%s" , str);
      
if (i & 1)
          
for (j = len - 2 ; j >=0 ; -- j)
            printf (
"%c" , str[ j ]);
      
else
          
for (j = len - 1 ; j >= 0 ; -- j)
          printf (
"%c" , str[ j ]);
      printf (
"\n");
    }

  
return 0;
}


你可能感兴趣的:(toj 2621 Palindrome Numbers)