| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我要无语了,多少组测试数据都发现不了错误,大牛们帮帮忙#include <iostream>
using namespace std;
long long a[40000];
void solve(int t, int j)
{
int tem = t-a[j], tempo;
if (tem < 10)
{
printf("%d\n",tem);
return;
}
else if (tem >= 10 && tem < 190)
{
tempo = tem-9;
tempo = (tempo+1)/2+9;
if (tem%2)
{
printf("%d\n",tempo%10);
return;
}
else
{
printf("%d\n",tempo/10);
return;
}
}
else if (tem >= 190 && tem < 2890)
{
tempo = tem-189;
tempo = (tempo+2)/3+99;
switch(tem%3)
{
case 0:
printf("%d\n",tempo%10);
return;
case 1:
printf("%d\n",tempo/100);
return;
case 2:
printf("%d\n",tempo/10%10);
return;
default: return;
}
}
else if (tem >= 2890 && tem < 38890)
{
tempo = tem-2889;
tempo = (tempo+3)/4+999;
switch(tem%4)
{
case 2:
printf("%d\n",tempo/1000);
return;
case 3:
printf("%d\n",tempo/100%10);
return;
case 0:
printf("%d\n",tempo/10%10);
return;
case 1:
printf("%d\n",tempo%10);
return;
default: return;
}
}
else
{
tempo = tem - 38889;
tempo = (tempo+4)/5 + 9999;
switch(tem%5)
{
case 0:
printf("%d\n",tempo/10000);
return;
case 1:
printf("%d\n",tempo/1000%10);
return;
case 2:
printf("%d\n",tempo/100%10);
return;
case 3:
printf("%d\n",tempo/10%10);
return;
case 4:
printf("%d\n",tempo%10);
return;
}
}
}
int main()
{
int N, t;
unsigned int i, j;
scanf("%d",&N);
a[0] = 0;
for (i = 1; i < 10; i++)
{
a[i] = a[i-1]+i;
}
for (i = 10; i < 100; i++)
{
a[i] = a[i-1]+2*i-9;
}
for (i = 100; i < 1000; i++)
{
a[i] = a[i-1]+3*(i-99)+189;
}
for (i = 1000; i < 10000; i++)
{
a[i] = a[i-1]+4*(i-999)+2889;
}
for (i = 10000; a[i-1] <= 2147483647; i++)
{
a[i] = a[i-1]+4*(i-9999)+38889;
}
for (int i = 0; i < N; i++)
{
scanf("%d",&t);
if (t < 230348388)
{
for (j = 0;; j++)
{
if (t>a[j] && t <= a[j+1])
{
solve(t, j);
break;
}
}
}
else if (t>=230348388 && t < 944193388)
{
for (j = 10999;; j++)
{
if (t>a[j] && t <= a[j+1])
{
solve(t, j);
break;
}
}
}
else if (t >= 944193388)
{
for (j = 21999;; j++)
{
if (t>a[j] && t <= a[j+1])
{
solve(t, j);
break;
}
}
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator