📄 1937229_wa.c
字号:
# include <stdio.h>
# include <math.h>
static long a[] = {45,9000,1386450,188019000};
static long b[] = {1,11,192,2893,38894,488895};
static long c[] = {9,180,2700,36000,450000,5400000,63000000};
int main()
{
int i, t;
long n, bn, m, mm;
double tmp, s;
scanf("%d",&t);
while(t--)
{
scanf("%lf",&tmp);
for(i = 0; i < 4; i++)
{
if(tmp <= a[i])
break;
else
tmp -= a[i];
}
/*s = b[i]-(i+1)/2;
s *= s;
s += 2*(i+1)*tmp;
s = sqrt(s);
s += (i+1)/2 - b[i];
s /= (i+1);*/
s = 2*tmp/(i+1);
s += (b[i]/(i+1)-0.5)*(b[i]/(i+1)-0.5);
s = sqrt(s);
s += 0.5 - b[i]/(i+1);
n = (long)floor(s);
bn = b[i] + (n-1)*(i+1);
s = (b[i]+bn)*n/2;
while(1)
{
if(s >= tmp)
break;
else
{
n++;
bn+=i+1;
s+=bn;
}
}
tmp -= (b[i]+bn-i-1)*(n-1)/2;
for(i = 0; i < 6; i++)
{
if(tmp > c[i])
tmp -= c[i];
else
break;
}
m = (long)tmp/(i+1);
if((long)tmp%(i+1)==0) m--;
mm = (long)pow(10,i);
mm += m;
m = (long)tmp%(i+1);
while(m--)
mm/=10;
printf("%ld\n",mm%10);
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -