Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

선행 0이 없는 N 자리 및 밑수 B의 가능한 모든 수?

<시간/>

여기서 우리는 하나의 문제를 볼 것입니다. 우리는 N과 밑수 B가 있습니다. 우리의 임무는 선행 0 없이 밑수 B의 모든 N 자리 숫자를 계산하는 것입니다. 따라서 N이 2이고 B가 2인 경우 4개의 숫자 00, 01, 10, 11이 있습니다. 따라서 이 섹션에서는 그 중 2개만 유효합니다. 이것은 10, 11이며 선행 0이 없습니다.

밑수가 B이면 0에서 B까지 – 1개의 다른 숫자가 있습니다. 그래서 B N 여러 N 자리 값을 생성할 수 있습니다(선행 0 포함). 무시하면 첫 번째 숫자는 0m입니다. B N-1 숫자. 따라서 선행 0이 없는 총 N 자리 숫자는 B N 입니다. – B N-1

알고리즘

countNDigitNum(N, B)

Begin
   total := BN
   with_zero := BN-1
   return BN – BN-1
End

예시

#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);
}

출력

Number of values: 28672