Given a square with N points on each side of the square and none of these points co-incide with the corners of the square. The task is to calculate the total number of triangles that can be formed using these 4 * N points (N points on each side of the square) as vertices of the triangle.
Examples:
Input: N = 1
Output: 4
There is one point on each side. So we can make three rectangles by leaving one point and picking other three points out of the four.
Input: N = 2
Output: 56
Approach: The number of ways of choosing 3 points among 4 * N points is (4 * N)C3. However, some of them do not form a triangle. This happens when all the three chosen points are on the same side of the square. The count of these triplets is NC3 for each of the side i.e. 4 * NC3 in total. Therefore, the required count of triangles will be ((4 * N)C3) – (4 * NC3).
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function to return the count // of possible triangles int noOfTriangles( int n)
{ int y = 4 * n;
return ((y * (y - 2) * (y - 1))
- (4 * n * (n - 2) * (n - 1)))
/ 6;
} // Driver code int main()
{ int n = 1;
cout << noOfTriangles(n);
return 0;
} |
// Java implementation of the above approach class GFG
{ // Function to return the count
// of possible triangles
static int noOfTriangles( int n)
{
int y = 4 * n;
return ((y * (y - 2 ) * (y - 1 )) -
( 4 * n * (n - 2 ) * (n - 1 ))) / 6 ;
}
// Driver code
public static void main (String[] args)
{
int n = 1 ;
System.out.println(noOfTriangles(n));
}
} // This code is contributed by AnkitRai01 |
# Python3 implementation of the approach # Function to return the count # of possible triangles def noOfTriangles(n):
y = 4 * n
return ((y * (y - 2 ) * (y - 1 )) -
( 4 * n * (n - 2 ) * (n - 1 ))) / / 6
# Driver code n = 1
print (noOfTriangles(n))
# This code is contributed by Mohit Kumar |
// C# implementation of the above approach using System;
class GFG
{ // Function to return the count
// of possible triangles
static int noOfTriangles( int n)
{
int y = 4 * n;
return ((y * (y - 2) * (y - 1)) -
(4 * n * (n - 2) * (n - 1))) / 6;
}
// Driver code
public static void Main (String[] args)
{
int n = 1;
Console.WriteLine(noOfTriangles(n));
}
} // This code is contributed by 29AjayKumar |
<script> // javascript implementation of the approach // Function to return the count // of possible triangles function noOfTriangles(n)
{ var y = 4 * n;
return ((y * (y - 2) * (y - 1))
- (4 * n * (n - 2) * (n - 1)))
/ 6;
} // Driver code var n = 1;
document.write(noOfTriangles(n)); </script> |
4
Time Complexity: O(1)
Auxiliary Space: O(1)