यहां हम एक समस्या देखेंगे, हमारे पास N और आधार B है। हमारा कार्य अग्रणी 0 के बिना आधार B के सभी N अंकों की संख्याओं को गिनना है। इसलिए यदि N 2 है और B 2 है तो चार संख्याएं होंगी: 00, 01, 10, 11। तो उनमें से केवल दो इस खंड के लिए मान्य हैं। ये 10, 11 हैं, कोई अग्रणी 0 नहीं है।
यदि आधार B है, तो 0 से B-1 तक अलग-अलग अंक हैं। इसलिए B^N अलग-अलग N अंकों के मान उत्पन्न किए जा सकते हैं (अग्रणी 0 सहित)। पहला अंक 0 है, यदि हम इसे अनदेखा करते हैं तो B^(N-1) संख्याएं हैं। तो कुल N अंकों की संख्याएं जिनमें कोई अग्रणी 0 नहीं है: B^N - B^(N-1)
एल्गोरिदम
countNDigitNum(N, B)
शुरुआत
total := B^N
with_zero := B^(N-1)
return B^N - B^(N-1)
समाप्त
उदाहरण
#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);
return 0;
}
आउटपुट
Number of values: 28672