用 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; }
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输出
如果我们运行上面的代码,它将生成以下输出:
Count of number of pairs : 3
广告