समस्या विवरण
हमें एक संख्या N इनपुट के रूप में दी गई है। N पर दो ऑपरेशन करें और प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की संख्या पहचानें। चरण होंगे:
- संख्या में 1 जोड़ें
- उत्पन्न संख्या से अनुगामी शून्य हटाएं, यदि कोई हो
यदि N 8 है तो उत्पन्न संख्याएं होंगी:
चरण 1 लागू: 8 → 9 →
चरण 2 लागू: 1 → (10 से 0 हटाया)
चरण 1 लागू: 2 → 3 → 4 → 5 → 6 → 7 → 8 (वही क्रम)
अद्वितीय संख्याओं की गिनती 9 होगी।
उदाहरण
इनपुट
N=21
आउटपुट
अद्वितीय संख्याओं की गिनती: 18
व्याख्या
संख्याएं होंगी: 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3 ---अब वही क्रम। अद्वितीय संख्याएं: 18
इनपुट
N=38
आउटपुट
अद्वितीय संख्याओं की गिनती: 11
व्याख्या
संख्याएं होंगी: 38, 39, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4 ---अब वही क्रम। अद्वितीय संख्याएं: 11
दृष्टिकोण
इस दृष्टिकोण में हम एक unordered_set<int> U_S बनाएंगे जिसमें चरण 1 और 2 लागू करने के बाद उत्पन्न सभी अद्वितीय संख्याएं होंगी। यदि संख्याएं दोहराती हैं, तो हम पुनरावृत्ति रोक देंगे। सेट का आकार हमें प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की संख्या देगा।
एल्गोरिदम चरण
- संख्या
Nको पूर्णांक के रूप में लें। - जनरेट की गई संख्याओं को डालने के लिए
unordered_set<int> U_Sलें। - फंक्शन
unique_N(unordered_set<int>& U_S, int N)सेट औरNलेता है और सभी संख्याएं अद्वितीय होने तक सेटU_Sमें संख्याएं जोड़ता है। - यदि
U_S.count(N)1 लौटाता है तो इसका मतलबNपहले से सेट में मौजूद है। इसलिए संख्याएं दोहराएंगी, फंक्शन से लौटें। - अन्यथा
Nको सेट में डालें और ऑपरेशन 1 लागू करें (1 से बढ़ाएं)। - जांचें कि संख्या
Nमें अनुगामी शून्य हैं (10 का गुणक है)। - यदि
N % 100 है, तो इसे 10 से विभाजित करके अनुगामी शून्य हटाएं। - अपडेट किए गए
Nके साथ फंक्शनunique_N()कॉल करें। - फंक्शन से लौटने पर, सेट
U_Sके आकार के रूप में गिनती लें। - परिणाम के रूप में गिनती प्रिंट करें।
C++ कोड उदाहरण
#include <bits/stdc++.h>
using namespace std;
void unique_N(unordered_set<int>& U_S, int N) {
if (U_S.count(N)) {
return;
}
U_S.insert(N);
N = N + 1;
while (N % 10 == 0) {
N = N / 10;
}
unique_N(U_S, N);
}
int main() {
int N = 7;
unordered_set<int> U_S;
unique_N(U_S, N);
int count = U_S.size();
cout << "अद्वितीय संख्याओं की गिनती: " << count;
return 0;
}
आउटपुट
अद्वितीय संख्याओं की गिनती: 9