इस समस्या में, हमें एक संख्या N दी जाती है। हमारा कार्य दिए गए संख्या N के भाजक में सबसे बड़ी अच्छी संख्या ज्ञात करना है। ।
एक अच्छी संख्या एक संख्या है जिसमें प्रत्येक अंक अपने दाहिनी ओर के अंकों के योग से बड़ा होता है (इससे सभी कम महत्वपूर्ण बिट्स)। उदाहरण के लिए, 732 एक अच्छी संख्या है, 7> 3+2 और 3>2।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : N = 15 Output : 15
स्पष्टीकरण -
Divisors of 15 : 1, 3, 5, 15.
समाधान दृष्टिकोण
समस्या का एक सरल समाधान N के सभी भाजक ज्ञात करना है। और वे सबसे बड़ी अच्छी संख्या पाते हैं जिसे संख्या के सभी अभाज्य भाजक के गुणनफल के रूप में निकाला जाता है।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <bits/stdc++.h> using namespace std; int findLargestGoodNumber(int n){ vector<int> primeFactors; int x = n; for (int i = 2; i * i <= n; i++) { if (x % i == 0) { primeFactors.push_back(i); while (x % i == 0) x /= i; } } if (x > 1) primeFactors.push_back(x); int goodNumber = 1; for (int i = 0; i < primeFactors.size(); i++) goodNumber = goodNumber * primeFactors[i]; return goodNumber; } int main(){ int n = 28; cout<<"The largest good Number in divisor of "<<n<<" is "<<findLargestGoodNumber(n); return 0; }
उदाहरण
The largest good Number in divisor of 28 is 14