阅读 130

使用 C++ 计算由三条线上的一组点形成的三角形的数量

我们现在在 3 行中给出了几个点;例如,我们需要找出这些点可以形成多少个三角形


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


我们将对这个问题应用一些组合学,并编写一些公式来解决这个问题。

寻找解决方案的方法

在这种方法中,我们将通过将组合学应用于当前情况来设计一个公式,这个公式将为我们提供结果。

上述方法的 C++ 代码

这是我们可以用作输入来解决给定问题的 C++ 语法 -

示例


#include <bits/stdc++.h>#define MOD 1000000007using 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); // n 与 3 的组合。   long long linem = comb(m, 3); // m 与 3 的组合。   long long liner = comb(r, 3); //r 与 3 的组合。   long long answer = comb(n + m + r, 3); // n、m、r 与 3 的所有可能组合。   answer -= (linen + linem + liner);
   cout << answer << "\n";
   return 0;
}

输出结果

205


上面代码的解释

在这种方法中,我们找到了 n+m+r 与三个的所有可能组合,即 comb(n+m+r, 3)。现在,如您所知,3 个点成为三角形的条件是它们不应该共线,所以我们找到所有可能的共线点,它们是 n、m、r 与三个的组合之和,并且当我们用 n+m+r 的多样性减去这个总和,得到答案,然后打印出来。

结论

这篇文章讨论了通过应用一些组合学可以从三条线上的一组点形成多少个三角形。我们还学习了针对此问题的 C++ 程序以及解决此问题的完整方法(Normal)。我们可以用其他语言编写相同的程序,例如 C、java、python 和其他语言。我们希望这篇文章对您有所帮助


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐