首页 > 后端开发 > C++ > 正文

使用C++编写,找出由三条线上的一组点组成的三角形的数量

王林
发布: 2023-09-09 09:53:08
转载
1246 人浏览过

使用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学习者快速成长!