计算对数(i,j),以使C ++中的arr [i] * arr [j]> arr [i] + arr [j]

给定n个正数的数组。目标是对有序对(i,j)进行计数,以使arr [i] * arr [j]> arr [i] + arr [j]且0 <= i < j <n。其中n是数组中元素的数量。

我们将对每个对数使用两个for循环遍历数组。现在计算arr [i]和arr [j]的总和。如果乘积大于总和计数。

让我们通过示例来理解。

输入-Arr [] = {1,1,2,3} N = 4

输出-对数-1

说明-只有有效对是-(2,3)

2*3=6 > 2+3=5

输入-Arr [] = {2,2,2} N = 3

输出-对数-0

说明-2 * 2和2 + 2均为4。

以下程序中使用的方法如下

  • 我们采用以正数初始化的整数数组arr []。

  • 取一个变量n,它存储Arr []的长度。

  • 函数countPairs(int arr [],int n)接受一个数组,将其长度作为输入并打印乘积> sum的对数。

  • 对数组中的每个元素使用两个for循环遍历数组。

  • 外循环从0 <= i <n-1,内循环i <j <n

  • 检查arr [i] * arr [j]> arr [i] + arr [j]。如果为true,则增加计数。

  • 在所有循环的末尾,count的对总数为product> sum

  • 返回计数作为结果。

示例

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   int sum=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]*arr[j]>arr[i]+arr[j]) //condition
            { count++; }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1,2,3,2 };
   int len = sizeof(arr) / sizeof(int);
   cout<<"对数计数:"<<countPairs(arr, len);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

对数计数:2