在这里,我们将看到一个问题,我们有N和基数B。我们的任务是计算基数为B的N位数,没有前导0的所有数字的数量。所以如果N是2,B是2,那么会有四个数字00、01、10、11。所以只有其中两个数字对这个部分有效。它们是10、11,没有前导0。
如果基数是B,那么有0到B-1个不同的数字。所以可以生成B^N个不同的N位数(包括前导0)。如果我们忽略第一个数字0,那么有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
登录后复制
Example
的中文翻译为:
示例
#include
#include
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