これで、3 行にいくつかの点が存在します。たとえば、これらの点が形成できる三角形の数を調べる必要があります。
Input: m = 3, n = 4, k = 5 Output: 205 Input: m = 2, n = 2, k = 1 Output: 10
いくつかの組み合わせを適用します。この問題を解決するための数学と、この問題を解決するためのいくつかの公式を定式化します。
この方法では、式を考案します。現在の状況に組み合わせ論を適用すると、この式から結果が得られます。
これは、指定された問題を解決するための入力として使用できる 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 と 3 つの数値のすべての可能な組み合わせ、つまり comb(n m r, 3) を見つけます。さて、3 つの点が三角形になるための条件は、それらが同一線上にないことであることがわかりました。そのため、n、m、r の組み合わせを合計することによって得られるすべての可能な同一線上の点を見つけ、この合計を n m r と結合します。 3 つの数値が変化すると、答えが得られ、それを印刷します。
この記事では、組み合わせ論を適用して、3 直線上の一連の点から形成できる三角形の数を計算する方法について説明します。また、この問題を解決するための C プログラムと完全な方法 (通常の方法) も学びました。同じプログラムを C、Java、Python などの他の言語で書くことができます。この記事がお役に立てば幸いです。
以上がC++ で書かれており、3 つの直線上の一連の点によって形成される三角形の数を求めます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。