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

Tất cả các số có thể có N chữ số và cơ số B không có số 0 ở đầu?

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