इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो 2, 3 और 5 से विभाज्य सरणी से बनने वाली सबसे बड़ी संख्या को ढूँढता है।
आइए समस्या को हल करने के लिए चरणों को देखें।
- सरणी प्रारंभ करें।
- संख्या 0 के साथ समाप्त होनी चाहिए और 2, 3 और 5 से विभाज्य होने के लिए सभी संख्याओं का योग 3 से विभाज्य होना चाहिए।
- सरणी में 0 की जाँच करें और यदि यह सरणी में मौजूद नहीं है तो प्रिंट करना संभव नहीं है।
- सरणी को अवरोही क्रम में क्रमबद्ध करें।
- योग% 3 के लिए शेष राशि ज्ञात करें।
- यदि शेष 1 नहीं है, तो अंत से उन सभी अंकों को हटा दें जिनका अंक% 3 के लिए शेष उपरोक्त शेष के बराबर है।
- यदि उपरोक्त के समान शेष के साथ कोई अंक नहीं हैं, तो उपरोक्त शेष में से 3 घटाएं और अंतिम दो अंक हटा दें जिनका शेष उपरोक्त जैसा ही है।
- सरणी से सभी अंक प्रिंट करें।
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h>
using namespace std;
void findLargestDivibleNumber(int n, vector<int>& v){
int flag = 0;
long long sum = 0;
for (int i = 0; i < n; i++) {
if (v[i] == 0) {
flag = 1;
}
sum += v[i];
}
if (!flag) {
cout << "Not possible" << endl;
}else {
sort(v.begin(), v.end(), greater<int>());
if (v[0] == 0) {
cout << "0" << endl;
}else {
int flag = 0;
int remainder = sum % 3;
if (remainder != 0) {
for (int i = n - 1; i >= 0; i--) {
if (v[i] % 3 == remainder) {
v.erase(v.begin() + i);
flag = 1;
break;
}
}
if (flag == 0) {
remainder = 3 - remainder;
int count = 0;
for (int i = n - 1; i >= 0; i--) {
if (v[i] % 3 == remainder) {
v.erase(v.begin() + i);
count++;
if (count >= 2) {
break;
}
}
}
}
}
if (*v.begin() == 0) {
cout << "0" << endl;
}else {
for (int i : v) {
cout << i;
}
}
}
}
}
int main() {
int n = 9;
vector<int> v{ 4, 5, 0, 3, 2, 4, 5, 6, 7 };
findLargestDivibleNumber(n, v);
return 0;
} आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
765544320
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।