Related Articles

# Maximum points of intersections possible among X circles and Y straight lines

• Last Updated : 09 Apr, 2021

Given two integers X and Y, the task is to find the maximum number of points of intersection possible among X circles and Y straight lines.

Example:

Input: X = 4, Y = 4
Output: 50
Explanation:
4 lines intersect each other at 6 points and 4 circles intersect each other at maximum of 12 points.
Each line intersects 4 circles at 8 points.
Hence, 4 lines intersect four circles at a maximum of 32 points.
Thus, required number of intersections = 6 + 12 + 32 = 50.

Input: X = 3, Y = 4
Output: 36

Approach:
It can be observed that there are three types of intersections:

1. The number of ways to choose a pair of points from X circles is . Each such pair intersect at most two points.
2. The number of ways to choose a pair of points from Y lines is . Each such pair intersect in at most one point.
3. The number of ways to choose one circle and one line from X circles and Y lines is is . Each such pair intersect in at most two points.

So, the maximum number of point of intersection can be calculated as:
=> => Thus, formula to find maximum number of point of intersection of X circles and Y straight lines is: Below is the implementation of the above approach:

## C++

 // C++ program to implement// the above approach#include using namespace std; int maxPointOfIntersection(int x, int y){    int k = y * (y - 1) / 2;    k = k + x * (2 * y + x - 1);    return k;} // Driver codeint main(){         // Number of circles    int x = 3;         // Number of straight lines    int y = 4;     // Function Call    cout << (maxPointOfIntersection(x, y));} // This code is contributed by Ritik Bansal

## Java

 // Java program to implement// the above approachclass GFG{     static int maxPointOfIntersection(int x, int y){    int k = y * (y - 1) / 2;    k = k + x * (2 * y + x - 1);    return k;} // Driver codepublic static void main(String[] args){         // Number of circles    int x = 3;         // Number of straight lines    int y = 4;     // Function Call    System.out.print(maxPointOfIntersection(x, y));}} // This code is contributed by Princi Singh

## Python3

 # Python3 program to implement# the above approachdef maxPointOfIntersection(x, y):    k = y * ( y - 1 ) // 2    k = k + x * ( 2 * y + x - 1 )    return k # Number of circlesx = 3# Number of straight linesy = 4 # Function Callprint(maxPointOfIntersection(x, y))

## C#

 // C# program to implement// the above approachusing System; class GFG{     static int maxPointOfIntersection(int x, int y){    int k = y * (y - 1) / 2;    k = k + x * (2 * y + x - 1);    return k;} // Driver codepublic static void Main(String[] args){         // Number of circles    int x = 3;         // Number of straight lines    int y = 4;     // Function Call    Console.Write(maxPointOfIntersection(x, y));}} // This code is contributed by Princi Singh

## Javascript

 
Output:
36

Time Complexity: O(1)
Auxiliary Space: O(1) My Personal Notes arrow_drop_up