Giả sử có một mô-đun cảm biến có thể giám sát môi trường lân cận của nó với bán kính r. Có một số điều trong điểm mạng của vòng tròn giám sát của mô-đun cần được theo dõi. Vì vậy, k số mô-đun công suất thấp được đặt để chúng chỉ có thể giám sát những điểm cụ thể đó. Với bình phương của bán kính và k số mô-đun công suất thấp, chúng ta sẽ phải tìm hiểu xem các điểm có thể được giám sát một cách chính xác hay không. Chúng tôi trả về true nếu có thể theo dõi, nếu không, chúng tôi trả về false.
Vì vậy, nếu đầu vào là bình phương bán kính (j) =4, số điểm quan trắc (k) =3, thì đầu ra sẽ là Sai
Nếu j =4, có 4 điểm trên chu vi của vòng tròn giám sát; đó là:(0,2), (0, -2), (2,0) và (-2,0). Vì vậy, nếu chúng tôi đưa vào ba trạm quan trắc mới, chúng tôi không thể giám sát các điểm một cách đầy đủ.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- square_set:=một tập hợp chứa các giá trị bình phương lên đến 44721
- i:=0
- res:=0
- while i <(j ^ 0.5), do
- if (j - i ^ 2) hiện diện trong square_set, thì
- res:=res + 1
- i:=i + 1
- if (j - i ^ 2) hiện diện trong square_set, thì
- res:=res * 4
- nếu k> =res, thì
- trả về True
- nếu không,
- trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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 print(solve(4, 3))
Đầu vào
4, 3
Đầu ra
False