有没有不带前导零的所有 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
广告
数据结构
网络化
RDBMS
操作系统
Java
iOS
HTML
CSS
安卓
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP