हमें इनपुट के रूप में एक नंबर N दिया गया है। एन पर दो ऑपरेशन करें और प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की गिनती की पहचान करें। कदम होंगे -
-
नंबर में 1 जोड़ें
-
जनरेट की गई संख्या से पिछला शून्य हटा दें, यदि कोई हो
यदि N 8 है तो उत्पन्न संख्याएँ होंगी
चरण 1− 8 → 9 →
. लागू करनाचरण 2− 1 → ( 10 से 0 हटा दिया गया)
. लागू करनाचरण 1:2 → 3 → 4 → 5 → 6 → 7 → 8 (समान क्रम) को लागू करना
अद्वितीय संख्याओं की संख्या 9 होगी।
उदाहरण के लिए
इनपुट
N=21
आउटपुट
Count of unique numbers that can be generated from N by adding one and removing trailing zeros are: 18
स्पष्टीकरण
Numbers will be: 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3 −−−now same sequence Unique numbers are: 18
इनपुट
N=38
आउटपुट
Count of unique numbers that can be generated from N by adding one and removing trailing zeros are: 11
स्पष्टीकरण
Numbers will be: 38, 39, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4 −−−now same sequence Unique numbers are: 11
नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -
इस दृष्टिकोण में हम एक अनियंत्रित सेट बनाएंगे जिसमें चरण 1 और 2 को लागू करने के बाद उत्पन्न सभी अद्वितीय संख्याएं होंगी। यदि संख्याएं दोहराई जाती हैं, तो हम पुनरावृत्ति को रोक देंगे। सेट का आकार हमें प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की गिनती देगा।
-
संख्या N को पूर्णांक के रूप में लें।
-
जेनरेट किए गए नंबर डालने के लिए unordered_set
U_S लें। -
फ़ंक्शन unique_N(unordered_set
&U_S, int N) सेट और N लेता है और सेट U_S में नंबर जोड़ता है जब तक कि इसमें सभी नंबर अद्वितीय न हों। -
यदि U_S.count(N) 1 लौटाता है, तो इसका अर्थ है कि N पहले से ही सेट में मौजूद है। तो संख्या दोहराई जाएगी, फ़ंक्शन से वापस आ जाएगी।
-
अन्यथा सेट में एन डालें और ऑपरेशन 1 लागू करें (1 से वृद्धि)।
-
जाँच करें कि क्या संख्या N में अनुगामी शून्य है (10 का गुणज)।
-
अगर N % 10 0 है, तो पीछे वाले शून्य को 10 से भाग देकर हटा दें।
-
अद्यतन एन के साथ अद्वितीय_एन () फ़ंक्शन को कॉल करें।
-
फ़ंक्शन से लौटने के बाद, सेट U_S के आकार के रूप में गिनें।
-
परिणाम को गिनती के रूप में प्रिंट करें।
उदाहरण
#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 of unique numbers that can be generated from N by adding one and removing trailing zeros are: "<<count; return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of unique numbers that can be generated from N by adding one and removing trailing zeros are: 9