एक पूर्णांक 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 का इनपुट लें।
एक पूर्णांक फंक्शन convertToFive(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 बन जाएगी।