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