poj 1019 Number Sequence
2012-05-16 21:10
519 查看
不知道这题应该怎么写,我写了一个很丑陋的模拟。32ms,1次ac。但是实在很丑。
/* * Author: stormdpzh * POJ: 1019 Number Sequence * Created Time: 2012/5/16 20:07:37 */ #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <algorithm> #include <functional> #define sz(v) ((int)(v).size()) #define rep(i, n) for(int i = 0; i < n; i++) #define repf(i, a, b) for(int i = a; i <= b; i++) #define repd(i, a, b) for(int i = a; i >= b; i--) #define out(n) printf("%d\n", n) #define wh(n) while(scanf("%d", &n) != EOF) #define whz(n) while(scanf("%d", &n) != EOF && n != 0) #define lint long long using namespace std; const lint MaxN = 100005; lint digit[MaxN]; lint rec[MaxN]; lint n; void init() { memset(digit, 0, sizeof(digit)); memset(rec, 0, sizeof(rec)); lint tmp = 0; for(lint i = 1; i < MaxN; i++) { tmp++; digit[i] = tmp; lint total = 0; lint tmp_digit = tmp; while(tmp_digit > 0) { total++; tmp_digit /= 10; } rec[i] = rec[i - 1] + total; } } lint getDigit(lint x) { lint res = 0; while(x > 0) { res++; x /= 10; } return res; } int gao() { lint tmp = 0; for(lint i = 1; i < MaxN; i++) { if(tmp + rec[i] >= n) { lint leave = n - tmp; lint tmp = 0; for(lint l = 1; l <= digit[i]; l++) { int cur_digit = getDigit(l); tmp += cur_digit; if(tmp >= leave) { int tmp_res[6]; lint j = l; int k = 0; while(j > 0) { tmp_res[k++] = j % 10; j /= 10; } lint tmp_leave = leave - (tmp - cur_digit); for(k--; k >= 0; k--) { if(tmp_leave == 1) return (int)tmp_res[k]; tmp_leave--; } } } } tmp += rec[i]; } } int main() { init(); int t; scanf("%d", &t); while(t--) { scanf("%d", &n); out(gao()); } return 0; }
相关文章推荐
- poj 1019 Number Sequence , 二分
- poj 1019 Number Sequence
- POJ-1019 Number Sequence 数学
- [POJ 1019]Number Sequence(递推)
- Number Sequence(POJ--1019
- POJ-1019-Number Sequence-组合数学
- poj 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- Number Sequence(poj 1019)
- POJ 1019, Number Sequence
- (DS1.5.10)POJ 1019 Number Sequence(确定一个数字序列中某一个位置上的数字)
- POJ 1019 - Number Sequence
- 【poj1019】 Number Sequence
- POJ 1019 Number Sequence
- POJ 1019 Number Sequence【数论】
- poj 1019 Number Sequence 打表二分
- POJ 1019 Number Sequence(水~)
- poj 1019 Number Sequence (组合数学)
- [poj 1019] Number Sequence 数学 想法题