Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में दिए गए सरणी के लिए arr[i]% arr[j] का अधिकतम मान


इस समस्या में, हमें n तत्वों की एक सरणी दी गई है। हमारा काम एक प्रोग्राम बनाना है जो किसी दिए गए सरणी के लिए arr[i]%arr[j] का अधिकतम मान पायेगा।

इसलिए, मूल रूप से हमें सरणी के दो तत्वों को विभाजित करते हुए अधिकतम शेषफल का मान ज्ञात करना होगा।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट - सरणी{3, 6, 9, 2, 1}

आउटपुट -6

स्पष्टीकरण -

3%3 = 0; 3%6 = 3; 3%9 = 3; 3%2 = 1; 3%1 = 0
6%3 = 0; 6%6 = 0; 6%9 = 6; 6%2 = 0; 6%1 =0
9%3 = 0; 9%6 = 3; 9%9 = 0 9%2 = 1; 9%1 = 0
2%3 = 2; 2%6 = 2; 2%9 = 2; 2%2 = 0; 2%1 = 0
1%3 = 1; 1%6 = 1; 1%9 = 1; 1%2 =1; 1%1 = 0
Out the above remainders the maximum is 6.

इसलिए, समाधान खोजने का एक सीधा तरीका यह होगा कि प्रत्येक जोड़े के लिए शेषफल की गणना की जाए और फिर उनमें से अधिकतम का पता लगाया जाए। लेकिन यह तरीका कारगर नहीं होगा क्योंकि इसकी समय जटिलता क्रम n 2 की होगी ।

तो, एक प्रभावी समाधान इस तर्क का उपयोग करेगा कि x%y का मान अधिकतम होगा जब y>x तब शेष x होगा। और सरणी के सभी तत्वों में से यदि हम दो अधिकतम तत्व लेते हैं, तो परिणाम अधिकतम होगा। इसके लिए, हम सरणी को सॉर्ट करेंगे और फिर परिणाम प्रदान करने के लिए अंतिम और दूसरे अंतिम तत्व को पुनरावृत्त करेंगे।

उदाहरण

हमारे समाधान के कार्यान्वयन को दर्शाने के लिए कार्यक्रम,

#include <bits/stdc++.h>
using namespace std;
int maxRemainder(int arr[], int n){
   bool hasSameValues = true;
   for(int i = 1; i<n; i++) {
      if (arr[i] != arr[i - 1]) {
         hasSameValues = false;
         break;
      }
   }
   if (hasSameValues)
      return 0;
   sort(arr, arr+n);
      return arr[n-2];
}
int main(){
   int arr[] = { 3, 6, 9, 2, 1 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The maximum remainder on dividing two elements of the array is "<<maxRemainder(arr, n);
   return 0;
}

आउटपुट

The maximum remainder on dividing two elements of the array is 6

  1. |ai + aj – k| . का न्यूनतम संभव मान C++ में दिए गए सरणी और k के लिए

    समस्या कथन आपको n पूर्णांक और एक पूर्णांक K की एक सरणी दी गई है। कुल असंगठित युग्मों की संख्या ज्ञात कीजिए {i, j} जैसे कि |ai + aj – k| का निरपेक्ष मान। न्यूनतम संभव है जहां मैं !=j. उदाहरण अगर arr[ ] ={0, 4, 6, 2, 4} और k =7 तो हम निम्न 5 जोड़े बना सकते हैं जिनका न्यूनतम मान 1 है {0, 6}, {4, 2},

  1. सी ++ में सरणी में प्रत्येक तत्व के लिए निकटतम मान पाएं

    यहां हम देखेंगे कि किसी सरणी में प्रत्येक तत्व के लिए निकटतम मान कैसे प्राप्त करें। यदि किसी तत्व x में अगला तत्व है जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का अधिक मूल्य होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लीजिए कि सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11,

  1. सी++ में इंटीजर की सरणी में अधिकतम उत्पाद के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y का गुणनफल अधिकतम हो। सरणी में सकारात्मक या नकारात्मक तत्व हो सकते हैं। मान लीजिए कि एक सरणी इस प्रकार है:ए =[-1, -4, -3, 0, 2, -5], तो जोड़ी (-4, -5) होगी क्योंकि उत्पाद अधिकतम है। इस