【题目】
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数求任意位对应的数字。
【code】
#include<iostream>
//#include<vector>
#include<stack>
#include<algorithm>
//#include<stack>
#include<queue>
#include<set>
using namespace std;
int countOfIntergers(int digit)
{
if (digit==1)
{
return 10;
}
int count = pow(10, digit - 1);
return 9 * count;
}
int beginNum(int digit)
{
if (digit==1)
{
return 0;
}
return pow(10, digit - 1);
}
int digitAtIndex(int index,int digit)
{
int number = beginNum(digit) + index / digit;
int index_from_right = digit - index % digit-1;
while (index_from_right--)
{
number /= 10;
}
return number % 10;
}
int digitAtIndex(int index)
{
int digit = 1;
while (true)
{
int number = countOfIntergers(digit);
if (index<number*digit)
{
return digitAtIndex(index, digit);
}
index -= number * digit;
digit++;
}
}
int main()
{
int index = 1001;
cout << digitAtIndex(index) << endl;
return 0;
}
/****
***/