हमें एक पूर्णांक प्रकार की संख्या दी गई है, मान लीजिए, number। कार्य है संख्या के अंकों को इस तरह पुनर्व्यवस्थित करना कि पुनर्व्यवस्थापन के बाद बनी संख्या भी दी गई संख्या यानी 'number' से विभाज्य हो।
विभिन्न इनपुट-आउटपुट परिदृश्य
इनपुट - int number = 100035
आउटपुट - इसके द्वारा विभाज्य संख्या का पुनर्व्यवस्थापन है: 300105
व्याख्या - हमें एक पूर्णांक संख्या 'number' यानी 100035 दी गई है। अब, कार्य है इन दिए गए अंकों को इस तरह पुनर्व्यवस्थित करना कि बनी संख्या 100035 से विभाज्य हो। तो, अंकों को पुनर्व्यवस्थित करने के बाद हमें 300105 मिला जो संख्या 100035 से विभाज्य है।
इनपुट - int number = 1000035
आउटपुट - इसके द्वारा विभाज्य संख्या का पुनर्व्यवस्थापन है: 3000105
व्याख्या - हमें एक पूर्णांक संख्या 'number' यानी 1000035 दी गई है। अब, कार्य है इन दिए गए अंकों को इस तरह पुनर्व्यवस्थित करना कि बनी संख्या 1000035 से विभाज्य हो। तो, अंकों को पुनर्व्यवस्थित करने के बाद हमें 3000105 मिला जो संख्या 1000035 से विभाज्य है।
इनपुट - int number = 28
आउटपुट - इसके द्वारा विभाज्य संख्या का पुनर्व्यवस्थापन है: -1
व्याख्या - हमें एक पूर्णांक संख्या 'number' यानी 28 दी गई है। अब, कार्य है इन दिए गए अंकों को इस तरह पुनर्व्यवस्थित करना कि बनी संख्या 28 से विभाज्य हो। तो अंकों को पुनर्व्यवस्थित करने के बाद हमें 82 मिला जो संख्या 28 से विभाज्य नहीं है इसलिए आउटपुट -1 है।
उपयोग किया गया दृष्टिकोण
एक पूर्णांक प्रकार का चर इनपुट करें, मान लीजिए, number और डेटा को फ़ंक्शन Rearrangement(number) में पास करें।
फ़ंक्शन Rearrangement(number) के अंदर
एक वेक्टर प्रकार का चर बनाएं जो पूर्णांक प्रकार के चर संग्रहीत कर रहा है, मान लीजिए, vec(10, 0)।
फ़ंक्शन total_count(number, vec) को कॉल करें और number और vec को पैरामीटर के रूप में फ़ंक्शन में पास करें।
i को 2 से 10 से कम होने तक FOR लूप शुरू करें। लूप के अंदर, temp को number * i सेट करें।
एक वेक्टर प्रकार का चर बनाएं जो पूर्णांक प्रकार के चर संग्रहीत कर रहा है, मान लीजिए, vec_2(10, 0)।
फ़ंक्शन total_count(number, vec_2) को कॉल करें और number और vec_2 को पैरामीटर के रूप में फ़ंक्शन में पास करें।
जांचें यदि equal(vec.begin(), vec.end(), vec_2.begin()) तो temp लौटाएं। अन्यथा, -1 लौटाएं।
फ़ंक्शन total_count(int number, vector<int> &vec_3) के अंदर
WHILE लूप शुरू करें जब number 1 है। लूप के अंदर, vec_3 को vec_3[number % 10]++ और number को number / 10 सेट करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; void total_count(int number, vector<int> &vec_3){ while(number){ vec_3[number % 10]++; number = number / 10; } } int Rearrangement(int number){ vector<int> vec(10, 0); total_count(number, vec); for(int i = 2; i < 10; i++){ int temp = number * i; vector<int> vec_2(10, 0); total_count(temp, vec_2); if(equal(vec.begin(), vec.end(), vec_2.begin())){ return temp; } } return -1; } int main(){ int number = 100035; cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
Rearrangement of a number which is also divisible by it is: 300105