#include<stdio.h>
#include<math.h>
int main()
{
double mark[5]={0.0,45.0,9045.0,1395495.0,189414495.0};
double num[5]={1.0,11.0,192.0,2893.0,38894.0};
int mum[5]={0,10,100,1000,10000};
int n,i,j;
char str[11];
double a,m;
int c;
long int d,b;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&m);
for(j=0;m>mark[j]&&j<5;j++);
if(mark[j]==m)
printf("9/n");
else
{
m-=mark[j-1];
a=-(num[j-1]/j-0.5)+sqrt((num[j-1]/j-0.5)*(num[j-1]/j-0.5)+2*(m-1)/j);
b=a/1;
if((b-1)%2==0)
a=m-num[j-1]*b-b*j*((b-1)/2);
else
if(b%2==0)
a=m-num[j-1]*b-j*(b-1)*(b/2);
else
a=m-num[j-1]*b-b*j*(b-1)/2;
for(j=0;j<5&&a>num[j]-j-1;j++);
a=(a-num[j-1]+j);
d=a;
if(j>1)
d=a/j==d/j?d/j-1:d/j;
b=d+mum[j-1];
d=a;
c=(d-1)%j;
while(j>0)
{
str[j--]='0'+b%10;
b/=10;
}
printf("%c/n",str[c+1]);
}
}
return 0;
}
POJ 1019 Number Sequence
最新推荐文章于 2022-02-25 21:57:21 发布