Di sini kita akan melihat masalah di mana kita mempunyai N dan asas B. Tugas kita ialah mengira bilangan N digit dalam asas B tanpa mendahului 0. Jadi jika N ialah 2 dan B ialah 2, maka akan ada empat nombor 00, 01, 10, dan 11. Jadi hanya dua daripada nombor yang sah untuk bahagian ini. Mereka adalah 10, 11, tanpa mendahului 0.
Jika asasnya B, maka terdapat 0 hingga B-1 nombor yang berbeza. Jadi B^N nombor N-digit yang berbeza (termasuk 0s pendahuluan) boleh dijana. Jika kita mengabaikan nombor pertama 0, maka terdapat nombor B^(N-1). Jadi jumlah bilangan N digit tanpa mendahului 0 ialah B^N - B^(N-1)
Begin total := B<sup>N</sup> with_zero := B<sup>N-1</sup> return BN – B<sup>N-1</sup> 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
Atas ialah kandungan terperinci Semua kemungkinan N digit dan asas B, tetapi tidak termasuk nombor dengan sifar pendahuluan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!