Naughty Sleepy Boys

题目:从1开始连续的整数构成一个字符串,,问第n为位对应的字符是谁。

分析:动态规划,dp。统计每个数字对应的前面的子串的长度;

找到给定长度的对应的串的子串,然后取对应数字的n-len(子串)的字符即可。

说明:加油╮(╯▽╰)╭。

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;long long sum[20000002];char temp[10];char *itoc(int i){int t = i,count = 0;while (t) {count ++;t = t/10;}temp[count –] = 0;while (i) {temp[count –] = i%10 + '0';i /= 10;}return temp;}int bs(int key){int l = 0,r = 20000000;while (l < r) {int mid = (l+r+1)/2;if (sum[mid] >= key)r = mid-1;else l = mid;}return l;}int main(){sum[0] = 0LL;int add = 1;for (int i = 1; i < 20000001; ++ i) {if (i == 10 || i == 100 || i == 1000 || i == 10000|| i == 100000 || i == 1000000 || i == 10000000)add ++;sum[i] = sum[i-1]+add;}int n,m;while (~scanf("%d",&n)) {m = bs(n);printf("%c\n",itoc(m+1)[n-sum[m]-1]);}return 0;}

可见内心底对旅行是多么的淡漠。

Naughty Sleepy Boys

相关文章:

你感兴趣的文章:

标签云: