स्टेपिंग नंबर एक संख्या है जहां लगातार अंकों के बीच का अंतर 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