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)
Đầ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
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.
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau - 2*3=6 > 2+3=5
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
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
Count of number of pairs :2