इस समस्या में, हमें एक सरणी भाजक [] दिया जाता है जिसमें N पूर्णांक होते हैं जो एक संख्या संख्या के भाजक होते हैं। हमारा काम इसके भाजक से संख्या ज्ञात करना है।
भाजक सरणी में 1 और संख्या शामिल नहीं है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
divisors[] = {3, 25, 5, 15}
आउटपुट
75
स्पष्टीकरण
The number 75 has divisors {3, 25, 5, 15}
समाधान दृष्टिकोण
समस्या को हल करने के लिए, हमें संख्या के सबसे छोटे और सबसे बड़े भाजक का उपयोग करके संख्या ज्ञात करनी होगी।
Num = smallest * largest
इसके लिए, हमें ऐरे डिविज़र्स [] को सॉर्ट करना होगा और फिर ऐरे के पहले और आखिरी इंडेक्स पर एलिमेंट्स का गुणनफल खोजना होगा।
संख्या संख्या के लिए, संख्या के सभी गुणनखंड ज्ञात कीजिए। और जांचें कि संख्या के भाजक भाजक सरणी के समान हैं। यदि हाँ, वापसी संख्या। अन्यथा, वापसी -1, संख्या को इंगित करते हुए नहीं पाया जा सकता है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; int findNumberFromDiv(int divisors[], int n){ sort(divisors, divisors + n); int num = divisors[0] * divisors[n - 1]; int numDiv[2*n]; int count = 0; for (int i = 2; i * i <= num; i++){ if (num % i == 0){ numDiv[count] = i; count ++ ; numDiv[count] = num/i; count++; } } sort(numDiv, numDiv + count); if (count != n) return -1; else{ for (int i = 0; i < count; i++) { if (divisors[i] != numDiv[i]) return -1; } } return num; } int main(){ int divisors[] = { 3, 25, 5, 15 }; int n = sizeof(divisors) / sizeof(divisors[0]); cout<<"The number is "<<findNumberFromDiv(divisors,n); return 0; }
आउटपुट
The number is 75