Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chữ Số Thứ N Trong C++


Giả sử chúng ta có một dãy số nguyên vô hạn, chúng ta phải tìm chữ số thứ n của dãy này. Ví dụ: n = 11 → đầu ra 0 vì dãy 123456789101112... chữ số thứ 11 là 0.

Để giải quyết, chúng ta làm theo các bước:

  • len := 1, cnt := 9, start := 1.

  • Khi n > len * cnt: n -= len * cnt; cnt *= 10; start *= 10; len++.

  • start += (n - 1) / len.

  • s := start dưới dạng chuỗi.

  • Trả về s[(n - 1) % len] - '0'.

Ví dụ (C++)

Hãy xem triển khai sau để hiểu rõ hơn:

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;

class Solution {
public:
    int findNthDigit(int n) {
        lli len = 1;
        lli cnt = 9;
        lli start = 1;
        while(n > len * cnt){
            n -= len * cnt;
            cnt *= 10;
            start *= 10;
            len++;
        }
        start += (n - 1) / len;
        string s = to_string(start);
        return s[(n - 1) % len] - '0';
    }
};

int main(){
    Solution ob;
    cout << (ob.findNthDigit(11));
}

Đầu vào

11

Đầu ra

0