📜  共n个点,m个共线的三角形的计数

📅  最后修改于: 2021-06-25 14:45:42             🧑  作者: Mango

平面中有“ n”个点,其中“ m”个点是共线的。找出由这些点形成的三角形的数量为顶点?
例子 :

Input :  n = 5, m = 4
Output : 6
Out of five points, four points are 
collinear, we can make 6 triangles. We
can choose any 2 points from 4 collinear
points and use the single point as 3rd
point. So total count is 4C2 = 6

Input :  n = 10, m = 4
Output : 116
C++
// CPP program to count number of triangles
// with n total points, out of which m are
// collinear.
#include 
using namespace std;
 
// Returns value of binomial coefficient
// Code taken from https://goo.gl/vhy4jp
int nCk(int n, int k)
{
    int C[k+1];
    memset(C, 0, sizeof(C));
 
    C[0] = 1;  // nC0 is 1
 
    for (int i = 1; i <= n; i++)
    {
        // Compute next row of pascal triangle
        // using the previous row
        for (int j = min(i, k); j > 0; j--)
            C[j] = C[j] + C[j-1];
    }
    return C[k];
}
 
/* function to calculate number of triangle
   can be formed */
int counTriangles(int n,int m)
{
    return (nCk(n, 3) - nCk(m, 3));
}
 
/* driver function*/
int main()
{
    int n = 5, m = 4;
    cout << counTriangles(n, m);
    return 0;
}


Java
//Java program to count number of triangles
// with n total points, out of which m are
// collinear.
import java.io.*;
import java.util.*;
 
class GFG {
 
// Returns value of binomial coefficient
// Code taken from https://goo.gl/vhy4jp
static int nCk(int n, int k)
{
    int[] C=new int[k+1];
    for (int i=0;i<=k;i++)
    C[i]=0;
     
    C[0] = 1; // nC0 is 1
 
    for (int i = 1; i <= n; i++)
    {
        // Compute next row of pascal triangle
        // using the previous row
        for (int j = Math.min(i, k); j > 0; j--)
            C[j] = C[j] + C[j-1];
    }
    return C[k];
}
 
/* function to calculate number of triangle
can be formed */
static int counTriangles(int n,int m)
{
    return (nCk(n, 3) - nCk(m, 3));
}
 
    public static void main (String[] args) {
      int n = 5, m = 4;
      System.out.println(counTriangles(n, m));
 
    }
}
 
//This code is contributed by Gitanjali.


Python3
# python program to count number of triangles
# with n total points, out of which m are
# collinear.
import math
  
# Returns value of binomial coefficient
# Code taken from https://goo.gl / vhy4jp
def nCk(n, k):
    C = [0 for i in range(0, k + 2)]
  
    C[0] = 1; # nC0 is 1
    for i in range(0, n + 1):
      
        # Compute next row of pascal triangle
        # using the previous row
        for j in range(min(i, k), 0, -1):
            C[j] = C[j] + C[j-1]
      
    return C[k]
  
# function to calculate number of triangle
# can be formed
def counTriangles(n, m):
    return (nCk(n, 3) - nCk(m, 3))
  
# driver code
n = 5
m = 4
print (counTriangles(n, m))
  
# This code is contributed by Gitanjali


C#
//C# program to count number of triangles
// with n total points, out of which m are
// collinear.
using System;
 
class GFG {
 
    // Returns value of binomial coefficient
    // Code taken from https://goo.gl/vhy4jp
    static int nCk(int n, int k)
    {
        int[] C=new int[k+1];
        for (int i = 0; i <= k; i++)
        C[i] = 0;
         
        // nC0 is 1
        C[0] = 1;
     
        for (int i = 1; i <= n; i++)
        {
            // Compute next row of pascal triangle
            // using the previous row
            for (int j = Math.Min(i, k); j > 0; j--)
                C[j] = C[j] + C[j - 1];
        }
        return C[k];
    }
     
    /* function to calculate number of triangle
    can be formed */
    static int counTriangles(int n,int m)
    {
        return (nCk(n, 3) - nCk(m, 3));
    }
     
    // Driver code
    public static void Main ()
    {
        int n = 5, m = 4;
        Console.WriteLine(counTriangles(n, m));
 
    }
}
 
// This code is contributed by vt_m.


PHP
 0; $j--)
            $C[$j] = $C[$j] + $C[$j - 1];
    }
    return $C[$k];
}
 
/* function to calculate number
of triangles that can be formed */
function counTriangles($n, $m)
{
    return (nCk($n, 3) - nCk($m, 3));
}
 
// Driver Code
$n = 5;
$m = 4;
echo counTriangles($n, $m);
return 0;
 
// This code is contributed by ChitraNayal
?>


Javascript


输出 :

6