There are ‘n’ points in a plane, out of which ‘m’ points are co-linear. Find the number of triangles formed by the points as vertices ?**Examples :**

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

Number of triangles =

^{n}C_{3}–^{m}C_{3}How does this formula work?

Consider the second example above. There are 10 points, out of which 4 collinear. A triangle will be formed by any three of these ten points. Thus forming a triangle amounts to selecting any three of the 10 points. Three points can be selected out of the 10 points in^{n}C_{3}ways.

Number of triangles formed by 10 points when no 3 of them are co-linear =^{10}C_{3}……(i)

Similarly, the number of triangles formed by 4 points when no 3 of them are co-linear =^{4}C_{3}……..(ii)

Since triangle formed by these 4 points are not valid, required number of triangles formed =^{10}C_{3}–^{4}C_{3}= 120 – 4 = 116

## C++

`// CPP program to count number of triangles` `// with n total points, out of which m are` `// collinear.` `#include <bits/stdc++.h>` `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

`<?php` `// PHP program to count number` `// of triangles with n total` `// points, out of which m are collinear.` `// Returns value of binomial coefficient` `// Code taken from https://goo.gl/vhy4jp` `function` `nCk(` `$n` `, ` `$k` `)` `{` ` ` `for` `(` `$i` `= 0; ` `$i` `<= ` `$k` `; ` `$i` `++)` ` ` `$C` `[` `$i` `] = 0;` ` ` `$C` `[0] = 1; ` `// nC0 is 1` ` ` `for` `(` `$i` `= 1; ` `$i` `<= ` `$n` `; ` `$i` `++)` ` ` `{` ` ` `// Compute next row of pascal` ` ` `// triangle using the previous row` ` ` `for` `(` `$j` `= min(` `$i` `, ` `$k` `); ` `$j` `> 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

`<script>` ` ` `// Javascript program to count number of triangles` ` ` `// with n total points, out of which m are` ` ` `// collinear.` ` ` ` ` `// Returns value of binomial coefficient` ` ` `// Code taken from https://goo.gl/vhy4jp` ` ` `function` `nCk(n, k)` ` ` `{` ` ` `let C = ` `new` `Array(k+1);` ` ` `C.fill(0);` ` ` `C[0] = 1; ` `// nC0 is 1` ` ` `for` `(let i = 1; i <= n; i++)` ` ` `{` ` ` `// Compute next row of pascal triangle` ` ` `// using the previous row` ` ` `for` `(let 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 */` ` ` `function` `counTriangles(n, m)` ` ` `{` ` ` `return` `(nCk(n, 3) - nCk(m, 3));` ` ` `}` ` ` ` ` `let n = 5, m = 4;` ` ` `document.write(counTriangles(n, m));` ` ` ` ` `// This code is contributed by divyesh072019.` `</script>` |

**Output :**

6