स्टेपिंग संख्या वह संख्या है जहां लगातार अंकों का अंतर 1 होता है। आपको अंकों की संख्या दर्शाने वाली एक संख्या n दी गई है। आपको n अंकों वाली स्टेपिंग संख्याओं की कुल संख्या गिननी है।
आइए एक उदाहरण देखते हैं।
इनपुट
2
आउटपुट
17
2 अंकों की सबसे छोटी संख्या 10 है और सबसे बड़ी 99 है। उनके बीच 17 स्टेपिंग संख्याएं हैं।
एल्गोरिदम
- संख्या n को आरंभ करें।
- काउंट को 0 पर आरंभ करें।
- n अंकों की सबसे छोटी संख्या ढूंढें यानी pow(10, n - 1)।
- n अंकों की सबसे बड़ी संख्या ढूंढें यानी pow(10, n) - 1।
- एक लूप लिखें जो सबसे छोटी n अंक संख्या से सबसे बड़ी n अंक संख्या तक पुनरावृति करता है।
- जांचें कि वर्तमान संख्या स्टेपिंग संख्या है या नहीं।
- संख्या में लगातार अंकों के जोड़े का अंतर जांचें।
- यदि किसी अंतर का परिणाम 1 नहीं है, तो false लौटाएं अन्यथा true।
- यदि वर्तमान संख्या स्टेपिंग संख्या है तो काउंट बढ़ाएं।
- काउंट लौटाएं।
कार्यान्वयन
उपरोक्त एल्गोरिदम का 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