• POJ2402+模拟


    题意:找出第index 个回文数。

    这题是有规律的,即list[]数组。

    其次,对于某个 index 可以先精确到 位数 pos,然后在进行分析。

    1a

      1 #include<stdio.h>
      2 #include<string.h>
      3 #include<math.h>
      4 typedef __int64 int64;
      5 int64 list[ 24 ];
      6 int ans[ 240 ];
      7 
      8 void init(){
      9     list[0] = 0;
     10     list[1] = 9;
     11     list[2] = 9;
     12     list[3] = 90;
     13     list[4] = 90;
     14     list[5] = 900;
     15     list[6] = 900;
     16     list[7] = 9000;
     17     list[8] = 9000;
     18     list[9] = 90000;
     19     list[10] = 90000;
     20     list[11] = 900000;
     21     list[12] = 900000;
     22     list[13] = 9000000;
     23     list[14] = 9000000;
     24     list[15] = 90000000;
     25     list[16] = 90000000;
     26     list[17] = 900000000;
     27     list[18] = 900000000;
     28     list[19] = 9000000000;
     29     list[20] = 9000000000;
     30     //printf("list20=%I64d
    ",list[20]);
     31 }
     32 int main(){
     33     int64 index;
     34     init();
     35     while( scanf("%I64d",&index),index ){
     36         int pos;
     37         for( int num=0;num<=20;num++ ){
     38             if( index>=list[ num ] ){
     39                 index -= list[ num ];
     40                 pos = num;
     41             }
     42             else
     43                 break;
     44         }
     45         if( index>0 ) pos ++;
     46         //printf("pos=%d
    ",pos);
     47         if( index==0 ){
     48             for( int i=0;i<pos;i++ )
     49                 printf("9");
     50             printf("
    ");
     51             continue;
     52         }
     53         int64 cur = list[ pos ]/9;
     54         if( index>=cur ){
     55             index += cur;
     56             index --;
     57             int tt=0;
     58             while( index!=0 ){
     59                 ans[ tt++ ] = index%10;
     60                 index /= 10;
     61             }
     62             if( pos%2==0 ){
     63                 for( int i=tt-1;i>=0;i-- )
     64                     printf("%d",ans[i]);
     65                 for( int i=0;i<tt;i++ )
     66                     printf("%d",ans[i]);
     67                 printf("
    ");
     68             }//偶数位
     69             else{
     70                 for( int i=tt-1;i>=0;i-- )
     71                     printf("%d",ans[i]);
     72                 for( int i=1;i<tt;i++ )
     73                     printf("%d",ans[i]);
     74                 printf("
    ");
     75             }//奇数位
     76         }
     77         else{
     78             index--;
     79             int num1 = 0;
     80             int num2 = 0;
     81             while( cur!=0 ){
     82                 num1++;
     83                 cur /= 10;
     84             }
     85             int tt = index;
     86             while( tt!=0 ){
     87                 num2++;
     88                 tt /= 10;
     89             }
     90             tt = 0;
     91             while( index!=0 ){
     92                 ans[tt++] = index%10;
     93                 index/=10;
     94             }
     95             for( int i=1;i<=num1-num2;i++ )
     96                 if( i==num1-num2 )
     97                     ans[tt++] = 1;
     98                 else
     99                     ans[tt++] = 0;
    100             if( pos%2==0 ){
    101                 for( int i=tt-1;i>=0;i-- )
    102                     printf("%d",ans[i]);
    103                 for( int i=0;i<tt;i++ )
    104                     printf("%d",ans[i]);
    105                 printf("
    ");
    106             }
    107             else{
    108                 for( int i=tt-1;i>=0;i-- )
    109                     printf("%d",ans[i]);
    110                 for( int i=1;i<tt;i++ )
    111                     printf("%d",ans[i]);
    112                 printf("
    ");
    113             }
    114         }
    115     }
    116     return 0;
    117 }
    View Code
    keep moving...
  • 相关阅读:
    Linux ln命令
    VSCodeUserSetupx641.67.2
    Where windows subsystem for linux (WSL) File/Directory Location?
    Bash 脚本实例:获取符号链接的目标位置
    叮,GitHub 到账 550 美元「GitHub 热点速览 v.22.26」
    用 40 块搞个游戏机“万能卡”「GitHub 热点速览 v.22.27」
    《HelloGitHub》第 75 期
    termux开启ssh服务
    buildroot使用介绍
    adb常用命令
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3209033.html
Copyright © 2020-2023  润新知