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

C++ में नकारात्मक संख्याओं के साथ जोड़ीदार गुणनफल का अधिकतम योग


सरणी में नकारात्मक संख्याएं भी हो सकती हैं। जोड़े बनाकर गुणा करने पर अधिकतम योग प्राप्त करें। मॉड्यूलो 10^9+7 लें।

रणनीति: सरणी को सॉर्ट करें। नकारात्मक संख्याओं को जोड़े में (सबसे छोटे से) गुणा करें, धनात्मक को जोड़े में (सबसे बड़े से) गुणा करें। यदि एक नकारात्मक और एक धनात्मक बचे तो उन्हें गुणा करें।

उदाहरण: {-1, 9, 4, 5, -4, 7} → अधिकतम योग 87।

C++ कार्यान्वयन

#include <bits/stdc++.h>
#define Mod 1000000007
using namespace std;

long long int findSum(int arr[], int n) {
    long long int sum = 0;
    sort(arr, arr + n);
    int i = 0;
    while (i < n && arr[i] < 0) {
        if (i != n - 1 && arr[i + 1] <= 0) {
            sum = (sum + (1LL * arr[i] * arr[i + 1]) % Mod) % Mod;
            i += 2;
        } else break;
    }
    int j = n - 1;
    while (j >= 0 && arr[j] > 0) {
        if (j != 0 && arr[j - 1] > 0) {
            sum = (sum + (1LL * arr[j] * arr[j - 1]) % Mod) % Mod;
            j -= 2;
        } else break;
    }
    if (j > i) sum = (sum + (1LL * arr[i] * arr[j]) % Mod) % Mod;
    else if (i == j) sum = (sum + arr[i]) % Mod;
    return sum;
}

int main() {
    int arr[] = {-1, 9, 4, 5, -4, 7};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << findSum(arr, n);
    return 0;
}

आउटपुट

87
  1. - C++ में दिए गए ऑपरेशन से ऐरे योग को अधिकतम करना

    विवरण (2 * n - 1) पूर्णांकों का एक ऐरे है। हम ऐरे में ठीक n तत्वों का चिन्ह बदल सकते हैं। दूसरे शब्दों में, हम ठीक n ऐरे तत्वों का चयन कर सकते हैं, और उनमें से प्रत्येक को -1 से गुणा कर सकते हैं। ऐरे का अधिकतम योग ज्ञात करें। उदाहरण यदि इनपुट ऐरे है {-2, 100, -3} तो हम -2 और -3 का चिन्ह बदलकर अधिक

  1. - C++ में पूर्णांकों की सरणी में अधिकतम गुणनफल वाली जोड़ी ढूंढें

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

  1. - C++ में दिए गए उत्पाद के साथ N पूर्णांकों का अधिकतम GCD

    मान लीजिए हमारे पास दो पूर्णांक N और P हैं। P, N अज्ञात पूर्णांकों का उत्पाद है। हमें उन पूर्णांकों के अधिकतम संभव GCD को ढूंढना है। मान लीजिए N = 3, और P = 24, तो अलग-अलग समूह होंगे जैसे {1, 1, 24}, {1, 2, 12}, {1, 3, 8}, {1, 4, 6}, {2, 2, 6}, {2, 3, 4}। GCD हैं: 1, 1, 1, 1, 2, 1। तो उत्तर यहां 2 ह