Contagem de triângulos com total de n pontos com m colinear
Existem 'n' pontos em um plano, dos quais 'm' pontos são colineares. Encontre o número de triângulos formados pelos pontos como vértices?
Exemplos :
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
Número de triângulos = n C 3 - m C 3
Como essa fórmula funciona?
Considere o segundo exemplo acima. São 10 pontos, dos quais 4 colineares. Um triângulo será formado por quaisquer três desses dez pontos. Assim, formar um triângulo significa selecionar três dos 10 pontos. Três pontos podem ser selecionados entre os 10 pontos em n C 3 maneiras.
Número de triângulos formados por 10 pontos quando nenhum 3 deles é colinear = 10 C 3 …… (i)
Da mesma forma, o número de triângulos formados por 4 pontos quando nenhum 3 deles é colinear = 4 C 3 …… .. (ii)
Uma vez que o triângulo formado por esses 4 pontos não são válidos, o número necessário de triângulos formados = 10 C 3 - 4 C 3 = 120 - 4 = 116
// 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 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.
# 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# 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 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
?>
<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>
Saída :
6
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva