Rumah >pembangunan bahagian belakang >C++ >Semua kemungkinan N digit dan asas B, tetapi tidak termasuk nombor dengan sifar pendahuluan

Semua kemungkinan N digit dan asas B, tetapi tidak termasuk nombor dengan sifar pendahuluan

王林
王林ke hadapan
2023-08-29 21:57:06651semak imbas

Semua kemungkinan N digit dan asas B, tetapi tidak termasuk nombor dengan sifar pendahuluan

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)

Algoritma

countNDigitNum(N, B)

Begin
   total := B<sup>N</sup>
   with_zero := B<sup>N-1</sup>
   return BN &ndash; B<sup>N-1</sup>
End

Contoh

Terjemahan bahasa Cina ialah:

Contoh

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

Output

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam