स्टेपिंग नंबर एक संख्या है जहां लगातार अंकों के बीच का अंतर 1 है। आपको अंकों की संख्या का प्रतिनिधित्व करने वाली संख्या n दी जाती है। आपको n अंकों के साथ स्टेपिंग नंबरों की कुल संख्या गिननी होगी।
आइए एक उदाहरण देखें।
इनपुट
2
आउटपुट
17
2 अंकों की सबसे छोटी संख्या 10 है और 2 अंकों की सबसे बड़ी संख्या 99 है। उनके बीच में 17 स्टेपिंग नंबर हैं।
एल्गोरिदम
- संख्या n प्रारंभ करें।
- गिनती को 0 से प्रारंभ करें।
- n अंकों की सबसे छोटी संख्या ज्ञात कीजिए, यानी पाउ(10, n - 1)।
- n अंकों की उच्चतम संख्या ज्ञात कीजिए, यानी पाउ(10, n) - 1.
- एक लूप लिखें जो निम्नतम n अंक संख्या से उच्चतम n अंक संख्या तक पुनरावृत्त हो।
- जांचें कि वर्तमान नंबर स्टेपिंग नंबर है या नहीं।
- अंकों के क्रमागत युग्मों के बीच अंतर की जाँच करें।
- यदि किसी अंतर का परिणाम 1 नहीं है, तो असत्य और सत्य लौटाएं।
- यदि वर्तमान संख्या एक चरण संख्या है तो गिनती बढ़ाएँ।
- गिनती लौटाएं।
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include <bits/stdc++.h>
using namespace std;
bool isSteppingNumber(int n) {
int previousDigit = -1;
while (n) {
int currentDigit = n % 10;
if (previousDigit != -1 && abs(previousDigit - currentDigit) != 1) {
return false;
}
previousDigit = currentDigit;
n /= 10;
}
return true;
}
int getSteppingNumbersCount(int n) {
int lowestNumber = pow(10, n - 1), highestNumber = pow(10, n) - 1;
int count = 0;
for (int i = lowestNumber; i <= highestNumber; i++) {
if (isSteppingNumber(i)) {
count += 1;
}
}
return count;
}
int main() {
int n = 3;
cout << getSteppingNumbersCount(n) << endl;
return 0;
} आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
32