C++ で書かれており、3 つの直線上の一連の点によって形成される三角形の数を求めます。

王林
リリース: 2023-09-09 09:53:08
転載
1269 人が閲覧しました

C++ で書かれており、3 つの直線上の一連の点によって形成される三角形の数を求めます。

これで、3 行にいくつかの点が存在します。たとえば、これらの点が形成できる三角形の数を調べる必要があります。

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

Input: m = 2, n = 2, k = 1
Output: 10
ログイン後にコピー

いくつかの組み合わせを適用します。この問題を解決するための数学と、この問題を解決するためのいくつかの公式を定式化します。

解決策を見つける方法

この方法では、式を考案します。現在の状況に組み合わせ論を適用すると、この式から結果が得られます。

上記のメソッドの C コード

これは、指定された問題を解決するための入力として使用できる C 構文です。 -

Example

#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 サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート