400. Nth Digit
题目描述
思路
计算出当前数字属于几位数digitCount,然后计算出目标数字在这个数中的具体位子digitIndex
代码
#include <iostream>
using namespace std;
class Solution {
public:
int findNthDigit(int n) {
long long base = 9;
int digitCount = 1;
while (n - base * digitCount > 0) {
n -= base * digitCount;
base *= 10;
++digitCount;
}
int numIndex = (n - 1) / digitCount;
int digitIndex = digitCount - 1 - (n - 1) % digitCount;
int num = base / 9 + numIndex;
while (digitIndex--)
num /= 10;
return num % 10;
}
};
int main() {
int n;
Solution s;
while (cin >> n) {
cout << s.findNthDigit(n) << endl;
}
}