Ở đây chúng ta sẽ thấy một vấn đề, Chúng ta có N và cơ số B. Nhiệm vụ của chúng ta là đếm tất cả N chữ số của cơ số B mà không có chữ số 0 nào đứng đầu. Vì vậy, nếu N là 2 và B là 2 sẽ có bốn số 00, 01, 10, 11. Vì vậy, chỉ có hai trong số họ là hợp lệ cho phần này. Đây là 10, 11, không có số 0 đứng đầu.
Nếu cơ sở là B thì có từ 0 đến B - 1 chữ số khác nhau. Vì vậy, B N số giá trị chữ số N khác nhau có thể được tạo ra (bao gồm cả các số 0 đứng đầu). Chữ số đầu tiên là 0m nếu chúng ta bỏ qua nó thì có B N-1 con số. Vì vậy, tổng số N chữ số không có chữ số 0 đứng đầu là B N - B N-1
Thuật toán
countNDigitNum (N, B)
Begin total := BN with_zero := BN-1 return BN – BN-1 End
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
int countNDigitNum(int N, int B) {
int total = pow(B, N);
int with_zero = pow(B, N - 1);
return total - with_zero;
}
int main() {
int N = 5;
int B = 8;
cout << "Number of values: " << countNDigitNum(N, B);
} Đầu ra
Number of values: 28672