Ở đâ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