C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で許可されている負の配列のペアワイズ積の最大合計


このチュートリアルでは、負の値が許可された配列でペアワイズ積の最大合計を見つけるプログラムについて説明します。

このために、整数を含む配列が提供されます。私たちのタスクは、ペアワイズ乗算を実行しながら最大合計を見つけることです。

#include <bits/stdc++.h>
#define Mod 1000000007
using namespace std;
//finding the maximum sum
long long int findSum(int arr[], int n) {
   long long int sum = 0;
   //sorting the array
   sort(arr, arr + n);
   int i = 0;
   while (i < n && arr[i] < 0) {
      if (i != n - 1 && arr[i + 1] <= 0) {
         sum = (sum + (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 + (arr[j] * arr[j - 1]) % Mod) % Mod;
         j -= 2;
      }
      else
         break;
   }
   if (j > i)
      sum = (sum + (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++の整数の配列で最大の積を持つペアを見つけます

    配列Aがあるとすると、n個の異なる要素があります。 xとyの積が最大になるように、配列Aからペア(x、y)を見つける必要があります。配列には正または負の要素が含まれる場合があります。配列がA=[-1、-4、-3、0、2、-5]のようであるとすると、積が最大になるため、ペアは(-4、-5)になります。 この問題を解決するには、positive_max、positive_second_max、negative_max、negative_second_maxの4つの数値を追跡する必要があります。最後に、(positive_max *positive_second_max)が(negative_ma

  2. C++で指定された製品のN個の整数の最大GCD

    2つの整数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です。 Pのすべての素因数を見つけて、ハッシュマップに保存します。素因数がすべての整数で共通である場合、N個の整数の最大公約数は最大GCDになります。したがって、P =p 1の場合 k1 * p 2 k2 *…*p n kn 。ここで、piは素因