Program to find out if k monitoring stations are enough to monitor particular points in Python

Suppose there is a sensor module that can monitor its nearby environment up to a radius of r. There are some things in the lattice point of the module's monitoring circle that need to be monitored. So, k number of low-powered modules are placed so that they can monitor only those specific points. Given the square of the radius and k number of low-powered modules, we shall have to find out if the points can be monitored correctly. We return true if monitoring is possible, otherwise, we return false.

Problem Understanding

If the input is like square of radius (j) = 4, number of monitoring points (k) = 3, then the output will be False.

If j = 4, there are 4 points on the circumference of the monitoring circle; that are: (0,2), (0,-2), (2,0), and (-2,0). So, if we introduce three new monitoring stations, we cannot monitor all the points fully.

Algorithm Steps

To solve this, we will follow these steps ?

  • square_set := a set containing square of values up to 44721
  • i := 0
  • res := 0
  • while i < (j ^ 0.5), do
    • if (j - i ^ 2) is present in square_set, then
      • res := res + 1
    • i := i + 1
  • res := res * 4
  • if k >= res, then
    • return True
  • otherwise,
    • return False

Example

Let us see the following implementation to get better understanding ?

square_set = set([z ** 2 for z in range(44722)])

def solve(j, k):
    i = 0
    res = 0
    while i < (j ** 0.5):
        if j - i ** 2 in square_set:
            res += 1
        i += 1
    res *= 4
    if k >= res:
        return True
    else:
        return False

# Test the function
print(solve(4, 3))

The output of the above code is ?

False

How It Works

The algorithm counts lattice points on a circle with radius squared equal to j. It uses the mathematical property that a point (x, y) lies on a circle of radius r if x² + y² = r². The function checks for integer solutions by iterating through possible x values and checking if (j - x²) is a perfect square.

The result is multiplied by 4 because each solution in the first quadrant corresponds to 4 points on the circle (considering all quadrants). Finally, it checks if k monitoring stations are sufficient to cover all points.

Conclusion

This solution efficiently determines if k monitoring stations can cover all lattice points on a circle by counting the total points and comparing with available stations. The precomputed square set optimizes the perfect square checking operation.

Updated on: 2026-03-26T14:24:44+05:30

201 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements