用 C++ 統計滿足條件的 (i, j) 對數:arr[i] 能被 arr[j] 整除 或 arr[j] 能被 arr[i] 整除。


給定一個包含 N 個元素的陣列 arr[]。目標是找到所有滿足條件的索引對 (i,j) 的數量,條件是 arr[i] 能被 arr[j] 整除 或 arr[j] 能被 arr[i] 整除,並且 i!=j。

我們將使用兩個 for 迴圈遍歷陣列 arr[] 中的每個數字對,並檢查當 i!=j 時,是否 arr[i]%arr[j]==0 或 arr[j]%arr[i]==0。如果是,則增加配對計數。

讓我們透過示例來理解。

輸入 − Arr[]= { 2,4,3,6 } N=4

輸出 − 有效對的數量 − 3

說明 − 有效對為 −

Arr[0] & Arr[1] → (2,4) here 4%2==0 0!=1
Arr[0] & Arr[1] → (2,6) here 6%2==0 0!=3
Arr[2] & Arr[3] → (3,6) here 6%3==0 2!=3

輸入 − Arr[]= { 2,5,7,9,11 } N=5

輸出− 有效對的數量 − 0

說明 − 沒有一個數能完全整除另一個數。無法形成任何對。

下面程式中使用的演算法如下:

  • 我們使用一個用隨機數初始化的整型陣列 Arr[]。

  • 使用變數 n 儲存 Arr[] 的長度。

  • 函式 countPairs(int arr[], int n) 以陣列及其長度作為輸入,並返回滿足所需條件的有效對。

  • 使用兩個 for 迴圈遍歷每個元素對。

  • 外迴圈從 0<=i<n-1,內迴圈 i<j<n

  • 檢查 arr[i]%arr[j]==0 或 arr[j]%arr[i]==0 是否成立。如果任一條件為真,則計數加一。

  • 所有迴圈結束後,count 將包含有效對的總數。

  • 返回計數作為結果。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   // Count of pairs
   int count = 0;
   for (int i = 0; i < n-1; i++){
      for (int j = i + 1; j < n; j++){
         if(arr[i]%arr[j]==0 || arr[j]%arr[i]==0)
            { count++; }
      }
   }
   return count;
}
int main(){
   int Arr[] = { 2,3,4,5,6 };
   int len = sizeof(Arr) / sizeof(Arr[0]);
   cout << "Count of number of pairs : "<< countPairs(Arr, len);
   return 0;
}

輸出

如果我們執行上面的程式碼,它將生成以下輸出:

Count of number of pairs : 3

更新於:2020-08-29

979 次瀏覽

啟動你的職業生涯

完成課程並獲得認證

開始學習
廣告
© . All rights reserved.