uva越来越不稳定了,疑惑的是翻墙出去都打不开uva,只能用chrome31。。。而且vj也交不上去,有种想换oj的冲动。
比较简单,不解释。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
long long n;
long long get(long long i)
{
long long sum=0,j=0,help;
while(i>0)
{
sum+=i;
help=9*int(pow(10,j));
if(i>=help)
{
i-=help;
}
else
{
i=0;
}
j++;
}
return sum;
}
void gettt(long long digit,long long dit)
{
char t[20];
sprintf(t,"%lld",dit);
//printf("%d\n",dit);
//for(int i=0;i<20;i++)
// printf("%d ",t[i]);
//printf("a%lld %s\n",dit,t);
putchar(t[digit-1]);
printf("\n");
}
void fun(long long i,long long all)
{
long long j,t;
for(j=1;j<=i;j++)
{
if(j<10)
t=1;
else if(j<100)
t=2;
else if(j<1000)
t=3;
else if(j<10000)
t=4;
else if(j<100000)
t=5;
else if(j<1000000)
t=6;
else if(j<10000000)
t=7;
else if(j<100000000)
t=8;
else if(j<1000000000)
t=9;
if(all+t>n)
{
//printf("cc%dcc\n",j);
gettt(n-all,j);
break;
}
else if(all+t==n)
{
printf("%lld\n",j%10);
break;
}
all+=t;
}
}
void solve()
{
long long i,j,all=0;
for(i=1;;i++)
{
j=get(i);
//printf("jj%d",j);
if(j+all>n)
{
//printf("bb%dbb\n",i);
fun(i,all);
break;
}
else if(j+all==n)
{
printf("%d\n",i%10);
break;
}
all+=j;
}
}
int main()
{
long long t;
//for(int i=1;i<1000;i++)
// printf("%d\n",i);
//printf("%lld",9e1);
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
solve();
}
return 0;
}