इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।