Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số tam giác được tạo thành từ một tập hợp các điểm trên ba dòng bằng cách sử dụng C ++

Bây giờ chúng ta đưa ra một số điểm trong 3 dòng; chúng tôi được yêu cầu tìm bao nhiêu hình tam giác mà các điểm này có thể tạo thành, chẳng hạn như

Input: m = 3, n = 4, k = 5
Output: 205

Input: m = 2, n = 2, k = 1
Output: 10

Chúng tôi sẽ áp dụng một số tổ hợp cho câu hỏi này và tạo ra một số công thức để giải quyết vấn đề này.

Phương pháp tiếp cận để tìm ra giải pháp

Trong cách tiếp cận này, chúng tôi sẽ đưa ra một công thức bằng cách áp dụng các phép tổ hợp vào các tình huống hiện tại và công thức này sẽ cung cấp cho chúng tôi kết quả của chúng tôi.

Mã C ++ cho cách tiếp cận trên

Đây là cú pháp C ++ mà chúng ta có thể sử dụng làm đầu vào để giải quyết vấn đề đã cho -

Ví dụ

#include <bits/stdc++.h>

#define MOD 1000000007

using namespace std;

long long fact(long long n) {
   if(n <= 1)
   return 1;
   return ((n % MOD) * (fact(n-1) % MOD)) % MOD;
}
long long comb(int n, int r) {
   return (((fact(n)) % MOD) / ((fact(r) % MOD) * (fact(n-r) % MOD)) % MOD);
}

int main() {
   int n = 3;
   int m = 4;
   int r = 5;
   long long linen = comb(n, 3); // the combination of n with 3.
   long long linem = comb(m, 3); // the combination of m with 3.
   long long liner = comb(r, 3); //the combination of r with 3.
   long long answer = comb(n + m + r, 3); // all possible comb of n, m , r with 3.
   answer -= (linen + linem + liner);
   cout << answer << "\n";
   return 0;
}

Đầu ra

205

Giải thích về đoạn mã trên

Trong cách tiếp cận này, chúng tôi tìm thấy tất cả các kết hợp có thể có của n + m + r với ba, tức là comb (n + m + r, 3). Như bạn đã biết, điều kiện để 3 điểm trở thành một tam giác là chúng không được thẳng hàng, vì vậy chúng tôi tìm tất cả các điểm thẳng hàng có thể có là tổng của tổ hợp n, m, r với ba và khi chúng tôi trừ tổng này với nhiều n + m + r với ba, chúng tôi nhận được câu trả lời và chúng tôi in ra.

Kết luận

Bài viết này đã thảo luận về việc có bao nhiêu tam giác có thể được tạo thành từ một tập hợp các điểm trên ba đường bằng cách áp dụng một số phép tổ hợp. Chúng tôi cũng đã học chương trình C ++ cho vấn đề này và cách tiếp cận hoàn chỉnh (Bình thường) mà chúng tôi đã giải quyết vấn đề này. Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, java, python và các ngôn ngữ khác. Chúng tôi hy vọng bạn thấy bài viết này hữu ích.