Computer >> Máy Tính >  >> Lập trình >> C ++

số thứ n với các chữ số trong {0, 1, 2, 3, 4, 5} trong C ++

Các số được tạo thành với các chữ số {0, 1, 2, 3, 4, 5} là

0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, v.v.,

Chúng ta có thể tạo dãy trên bằng cách sử dụng 6 chữ số đầu tiên. Hãy xem một ví dụ về sự hình thành các số.

1 * 10 + 0 = 10
1 * 10 + 1 = 11
1 * 10 + 2 = 12
1 * 10 + 3 = 13
1 * 10 + 4 = 14
1 * 10 + 5 = 15

Tương tự, áp dụng cho các số 2, 3, 4, 5. Bạn sẽ nhận được 6 số tiếp theo với 2 bằng cách sử dụng mẫu trên. Và sau đó là 3, sau đó là 4 và 5.

Thuật toán

  • Khởi tạo số n.
  • Khởi tạo một vectơ.
  • Viết một vòng lặp lặp lại từ 0 đến 5.
    • Đẩy tất cả các số thành vectơ.
  • Chúng tôi có sáu số đầu tiên của chuỗi.
  • Viết một vòng lặp lặp lại từ 0 đến n / 6.
    • Viết một vòng lặp lặp lại từ 0 đến 5.
      • Tạo các số còn lại với mẫu đã thảo luận ở trên.
      • Đẩy chúng vào vectơ.
  • Trả về số thứ n từ dãy số.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong C ++

#include <bits/stdc++.h>

using namespace std;

int findNthNumber(int n) {
   vector<int> numbers;

   for (int i = 0; i < 6; i++) {
      numbers.push_back(i);
   }
   for (int i = 0; i <= n / 6; i++) {
      for (int j = 0; j < 6; j++) {
         if ((numbers[i] * 10) != 0) {
            numbers.push_back(numbers[i] * 10 + numbers[j]);
         }
      }
   }
   return numbers[n - 1];
}
int main() {
   int n = 7;
   cout << findNthNumber(n) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

10