描述
回文数是这样一个正整数:它从左往右读和从右往左读是一样的。例如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 ",k); }}