Chúng ta được cung cấp một mảng gồm n số dương, mục tiêu là đếm các cặp có thứ tự (i, j) sao cho arr [i] * arr [j]> arr [i] + arr [j] và 0 <=i
Chúng tôi sẽ duyệt qua mảng bằng cách sử dụng hai vòng lặp for cho mỗi số cặp. Bây giờ hãy tính tổng và tích của arr [i] và arr [j]. Nếu sản phẩm lớn hơn tổng số gia tăng.
Hãy cùng hiểu với các ví dụ.
Đầu vào - Arr [] ={1,1,2,3} N =4
Đầu ra - Số cặp - 1
Giải thích - Chỉ có cặp hợp lệ là - (2,3)
2*3=6 > 2+3=5
Đầu vào - Arr [] ={2,2,2} N =3
Đầu ra - Số cặp - 0
Giải thích - cả 2 * 2 và 2 + 2 là 4. Không có cặp nào trong đó product> sum
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi lấy một mảng số nguyên arr [] được khởi tạo bằng các số dương.
-
Lấy một biến n lưu trữ độ dài của Arr [].
-
Hàm countPairs (int arr [], int n) nhận một mảng, độ dài của nó làm đầu vào và in ra số lượng các cặp với product> sum.
-
Traverse mảng sử dụng hai vòng lặp for cho mỗi phần tử của cặp.
-
Vòng ngoài từ 0 <=i
-
Kiểm tra xem arr [i] * arr [j]> arr [i] + arr [j] hay không. Số lượng tăng lên nếu đúng.
-
Ở cuối tất cả các vòng đếm sẽ có tổng số cặp có sản phẩm> tổng
-
Kết quả là số lượt trả lại.
Ví dụ
#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<<"Count of number of pairs :"<<countPairs(arr, len); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Count of number of pairs :2