1046-第K回文数

描述

回文数是这样一个正整数:它从左往右读和从右往左读是一样的。例如1,111,121,505都是回文数。将1到100,000,000内所有回文数按从小到达排序后,第k个回文数是多少呢?

输入

第一行为一个整数N,表示询问的次数。以下N行每行一个整数k,表示询问第k个回文数是多少。

输出

输出共N行,按照输入数据的顺序,依次输出第k个回文数。

样例输入

2

5

10

样例输出

5

11

#include<stdio.h>
int main(){int n,j,i,k;
scanf("%d",&n);
while(n--){
scanf("%d",&k);
if(k<=9);
else if(k<=18)
k=(k-10)*11+11;
else if(k<=108)
k=((k-19)/10+1)*101+(k-19)%10*10;
else if(k<=198)
k=((k-109)/10+1)*1001+(k-109)%10*110;
else if(k<=1098)
k=((k-199)/100+1)*10001+(k-199)/10%10*1010+(k-199)%10*100;
else if(k<=1998)
k=((k-1099)/100+1)*100001+(k-1099)/10%10*10010+(k-1099)%10*1100;
else if(k<=10998)
k=((k-1999)/1000+1)*1000001+(k-1999)/100%10*100010+(k-1999)%10*1000+(k-1999)/10%10*10100;
else if(k<=19998)
k=((k-10999)/1000+1)*10000001+(k-10999)/100%10*1000010+(k-10999)/10%10*100100+(k-10999)%10*11000;
printf("%d\n",k);
}}

  

上一篇:数据库SQL优化


下一篇:eclipse提升注解提示速度