#include "stdio.h" #include <math.h> #define SUM_MAX1 45 #define SUM_MAX2 9045 #define SUM_MAX3 1395495 #define SUM_MAX4 189414495 char pre45bits [46]={"112123123412345123456123456712345678123456789"}; unsigned int i,num,position,pos,maxnumber,minnumber,tempvalue1,tempvalue2,current,gap,minnumber2; unsigned int calc1,calc2,calc3,x,y,z; unsigned int total=0; double p=0; double bits; void getValue2(unsigned int pos){ minnumber=9; while(minnumber<100){ tempvalue1=minnumber*minnumber - 8*minnumber+36; tempvalue2=(minnumber+1)*(minnumber+1)-8*(minnumber+1)+36; if((pos>=tempvalue1) && (pos<tempvalue2)){ current = tempvalue1; gap=pos-tempvalue1; break; } minnumber++; } if(gap==0){ printf("%dn",minnumber%10); } else if(gap <10){ printf("%dn",gap); } else{ calc1 = (gap-9)/2; if(((gap-9)%2)==0){ printf("%dn",(calc1+9)%10); }else{ printf("%dn",(calc1+10)/10); } } } void getValue3(unsigned int pos){ minnumber=99; while(minnumber<1000){ tempvalue1=minnumber*189-9666+3*(minnumber-98)*(minnumber-99)/2; minnumber2=minnumber+1; tempvalue2=minnumber2*189-9666+3*(minnumber2-98)*(minnumber2-99)/2; if((pos>=tempvalue1) && (pos<tempvalue2)){ current = tempvalue1; gap=pos-tempvalue1; break; } minnumber++; } if(gap==0){ printf("%dn",minnumber%10); } else if(gap <10){ printf("%dn",gap); }else if(gap-9 <=180){ calc1 = (gap-9)/2; if(((gap-9)%2)==0){ printf("%dn",(calc1+9)%10); }else{ printf("%dn",(calc1+10)/10); } }else{ calc2 = (gap-189)/3; if(((gap-189)%3)==1){ printf("%dn",(calc2+100)/100); } if(((gap-189)%3)==2){ printf("%dn",((calc2+100)%100)/10); } if(((gap-189)%3)==0){ printf("%dn",(calc2+99)%10%10 ); } } } void getValue4(unsigned int pos){ minnumber=999; while(minnumber){ tempvalue1=minnumber*2889-1490616+2*(minnumber-999)*(minnumber-998); minnumber2=minnumber+1; tempvalue2=minnumber2*2889-1490616+2*(minnumber2-999)*(minnumber2-998); if((pos>=tempvalue1) && (pos<tempvalue2)){ current = tempvalue1; gap=pos-tempvalue1; break; } minnumber++; } if(gap==0){ printf("%dn",minnumber%10); } else if(gap <10){ printf("%dn",gap); }else if(gap-9 <=180){ calc1 = (gap-9)/2; if(((gap-9)%2)==0){ printf("%dn",(calc1+9)%10); }else{ printf("%dn",(calc1+10)/10); } }else if(gap-189<=2700){ calc2 = (gap-189)/3; if(((gap-189)%3)==1){ printf("%dn",(calc2+100)/100); } if(((gap-189)%3)==2){ printf("%dn",((calc2+100)%100)/10); } if(((gap-189)%3)==0){ printf("%dn",(calc2+99)%10 ); } }else{ calc3= (gap-2889)/4; if(((gap-2889)%4)==1){ printf("%dn",(calc3+1000)/1000); } if(((gap-2889)%4)==2){ printf("%dn",(calc3+1000)%1000/100); } if(((gap-2889)%4)==3){ printf("%dn",(calc3+1000)%100/10); } if(((gap-2889)%4)==0){ printf("%dn",(calc3+99)%10); } } } void getValue5(unsigned int pos){ minnumber=9999; while(minnumber<33000){ x=minnumber-9999; tempvalue1 = 189414495+38889*x + 5*(x+1)*x/2; minnumber2 = x+1; tempvalue2 = 38889*minnumber2 + 5*(minnumber2+1)*minnumber2/2+189414495; if((pos>=tempvalue1) && (pos<tempvalue2)){ current = tempvalue1; gap=pos-tempvalue1; break; } minnumber++; } if(gap==0){ printf("%dn",minnumber%10); } else if(gap <10){ printf("%dn",gap); }else if(gap-9 <=180){ calc1 = (gap-9)/2; if(((gap-9)%2)==0){ printf("%dn",(calc1+9)%10); }else{ printf("%dn",(calc1+10)/10); } }else if(gap-189<=2700){ calc2 = (gap-189)/3; if(((gap-189)%3)==1){ printf("%dn",(calc2+100)/100); } if(((gap-189)%3)==2){ printf("%dn",((calc2+100)%100)/10); } if(((gap-189)%3)==0){ printf("%dn",(calc2+99)%10 ); } }else if(gap-2889<36000){ calc3= (gap-2889)/4; if(((gap-2889)%4)==1){ printf("%dn",(calc3+1000)/1000); } if(((gap-2889)%4)==2){ printf("%dn",(calc3+1000)%1000/100); } if(((gap-2889)%4)==3){ printf("%dn",(calc3+1000)%100/10); } if(((gap-2889)%4)==0){ printf("%dn",(calc3+999)%10); } } else{ calc3= (gap-38889)/5; if(((gap-38889)%5)==1){ printf("%dn",(calc3+10000)/10000); } if(((gap-38889)%5)==2){ printf("%dn",(calc3+10000)%10000/1000); } if(((gap-38889)%5)==3){ printf("%dn",(calc3+10000)%1000/100); } if(((gap-38889)%5)==4){ printf("%dn",(calc3+10000)%100/10); } if(((gap-38889)%5)==0){ printf("%dn",(calc3+9999)%10); } } } int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #else #endif scanf("%d",&num); for(i=0;i<num;i++){ scanf("%u",&position); if(position<=45){ printf("%cn",pre45bits[position-1]); }else if(position<=9045){ getValue2(position); }else if(position<=1395495){ getValue3(position); }else if(position<=189414495){ getValue4(position); }else{ getValue5(position); } } #ifndef ONLINE_JUDGE fclose(stdin); #else #endif return 0; }