एक पूर्णांक N को देखते हुए, कार्य संख्या में दिखाई देने वाले सभी 0 को '5' से बदलना है। हालाँकि, अग्रणी '0' वाली संख्या को '5' से बदला नहीं जा सकता क्योंकि यह अपरिवर्तित रहती है। उदाहरण के लिए,
इनपुट-1 -
N= 1007
आउटपुट -
1557
स्पष्टीकरण - दी गई संख्या में 2 शून्य हैं, जिसे '5' से बदलने पर परिणाम 1557 के रूप में आता है।
इनपुट-2 -
N = 00105
आउटपुट -
155
स्पष्टीकरण - चूंकि दी गई संख्या अग्रणी '0' से शुरू होती है जिसे अनदेखा किया जा सकता है और 0 को बीच में '5' से बदलने के बाद आउटपुट 155 के रूप में परिणाम देता है।
इस समस्या को हल करने का तरीका
दी गई संख्या में सभी 0 को '5' से बदलने के लिए हम संख्या के अंतिम अंक को ढूंढ और निकाल सकते हैं। यदि उस संख्या का अंतिम अंक '0' है तो मान को बदलकर '5' कर दें और दूसरा अंक निकालें। हालांकि, दी गई संख्या में किसी भी अग्रणी '0' को अनदेखा किया जाना चाहिए।
समस्या को एक पुनरावर्ती दृष्टिकोण का उपयोग करके हल किया जा सकता है जहां हम पहले अंतिम अंक निकालेंगे और फिर उस संख्या के दूसरे अंक को निकालते समय उसी फ़ंक्शन को फिर से कॉल करेंगे।
-
इनपुट नंबर N लें।
-
एक पूर्णांक फ़ंक्शन converToFive(int N) इनपुट के रूप में एक संख्या लेता है और सभी 0 को '5' से बदलकर संशोधित संख्या देता है।
-
आधार मामले में, यदि संख्या '0' है, तो 0 लौटाएं, अन्यथा उस संख्या का अंतिम अंक निकालें और जांचें,
-
यदि संख्या का अंतिम अंक '0' है तो मान को '5' से बदलें।
-
रिकर्सिव फ़ंक्शन लौटाएं जो '10' को विभाजित करके और '10' से गुणा करके संख्या का एक और अंक लेता है।
-
वह आउटपुट लौटाएं जो अंतिम अंक को उसमें जोड़कर निकालता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; int convertToFive(int N) { if(N==0){ return 0; } int last_digit= N%10; if(last_digit==0) last_digit=5; return convertToFive(N/10)*10 +last_digit; } int main() { int N= 14006; cout << convertToFive(N) << endl; }
आउटपुट
यदि हम उपरोक्त कोड चलाएंगे, तो यह आउटपुट को इस रूप में प्रिंट करेगा,
14556
चूंकि दी गई संख्या में दो 0 हैं, इसलिए संख्या 14006 के स्थान पर यह 14556 हो जाएगी।