misschuer

常用链接

统计

积分与排名

百事通

最新评论

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


posted on 2009-12-31 21:30 此最相思 阅读(164) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理