इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सरणी से बनी सबसे बड़ी संख्या ढूंढता है जो 2, 3, और 5 से विभाज्य है।
आइए समस्या को हल करने के चरण देखते हैं।
- सरणी आरंभ करें।
- संख्या 0 से समाप्त होनी चाहिए और सभी संख्याओं का योग 3 से विभाज्य होना चाहिए ताकि यह 2, 3, और 5 से विभाज्य हो।
- सरणी में 0 की जांच करें और यदि यह सरणी में मौजूद नहीं है तो असंभव प्रिंट करें।
- सरणी को अवरोही क्रम में क्रमबद्ध करें।
- sum % 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।