有没有不带前导零的所有 N 位数和底数 B 的可能数?


我们在这里来看一个问题,我们有 N 和底数 B。我们的任务是计算所有不带前导 0 的 N 位底数 B 数。因此,如果 N 为 2,B 为 2,将有四个数字 00、01、10、11。因此,只有两个对本节有效。这些是 10、11,没有前导 0。

如果底数是 B,则有 0 到 B – 1 个不同的数字。因此,可以生成 BN 个不同的 N 位值(包括前导 0)。如果我们忽略第一位数字为 0,则会有 BN-1 个数字。因此,没有前导 0 的所有 N 位数字总数为 BN – BN-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

更新于: 31-7 月-2019

163 浏览量

开启你的 职业生涯

完成该课程以获得认证

开始
广告