首頁 > 後端開發 > C++ > 主體

使用C++編寫,找出由三條線上的一組點組成的三角形的數量

王林
發布: 2023-09-09 09:53:08
轉載
1247 人瀏覽過

使用C++編寫,找出由三條線上的一組點組成的三角形的數量

現在我們得到了3 行中存在的幾個點;例如,我們需要找出這些點可以形成多少個三角形

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

Input: m = 2, n = 2, k = 1
Output: 10
登入後複製

我們將應用一些組合數學來解決這個問題,並制定一些公式來解決這個問題。

尋找解決方案的方法

在這種方法中,我們將設計一個公式:將組合學應用於當前情況,這個公式將為我們提供結果。

上述方法的C 程式碼

這是我們可以用來求解的輸入的C 語法給定的問題-

範例

#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;
}
登入後複製

輸出

205
登入後複製

上述程式碼的解釋

在這個方法中,我們找到n m r與三個數的所有可能組合,即comb(n m r, 3)。現在,你知道,三個點變成一個三角形的條件是它們不能共線,所以我們找到了由n、m、r的組合求和得到的所有可能的共線點,然後將這個求和與n m r的三個數的變化相減,我們得到答案,並將其印出來。

結論

本文討論瞭如何透過應用組合數學來計算由三條線上的一組點可以形成多少個三角形。我們也學習了解決這個問題的C 程序和完整的方法(正常方法)。我們可以用其他語言如C、Java、Python和其他語言來寫相同的程式。希望這篇文章對您有幫助。

以上是使用C++編寫,找出由三條線上的一組點組成的三角形的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!