मान लीजिए एक सेंसर मॉड्यूल है जो अपने आसपास के वातावरण को त्रिज्या r तक मॉनिटर कर सकता है। मॉड्यूल के मॉनिटरिंग सर्कल के लैटिस पॉइंट में कुछ चीजें हैं जिन्हें मॉनिटर करने की आवश्यकता है। तो, k संख्या के लो-पावर्ड मॉड्यूल रखे गए हैं ताकि वे केवल उन विशिष्ट बिंदुओं की निगरानी कर सकें। दिए गए त्रिज्या के वर्ग और k संख्या के लो-पावर्ड मॉड्यूल को देखते हुए, हमें यह पता लगाना होगा कि बिंदुओं को सही ढंग से मॉनिटर किया जा सकता है या नहीं। यदि निगरानी संभव है तो हम true वापस करते हैं, अन्यथा false वापस करते हैं।
उदाहरण के लिए, यदि इनपुट त्रिज्या का वर्ग (j) = 4, निगरानी बिंदुओं की संख्या (k) = 3 है, तो आउटपुट False होगा।
यदि j = 4, तो निगरानी सर्कल की परिधि पर 4 बिंदु हैं; वे हैं: (0,2), (0,-2), (2,0), और (-2,0)। तो, यदि हम तीन नए मॉनिटरिंग स्टेशन पेश करते हैं, तो हम बिंदुओं को पूरी तरह से मॉनिटर नहीं कर सकते।
हल करने के चरण
square_set :=44721 तक के मानों के वर्ग वाला सेटi := 0res := 0i < (j ** 0.5)तक व्हाइल लूप चलाएं:- यदि
(j - i**2)square_setमें मौजूद है, तो:res := res + 1
i := i + 1
- यदि
res := res * 4- यदि
k >= res, तोTrueवापस करें। - अन्यथा,
Falseवापस करें।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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))
इनपुट
4, 3
आउटपुट
False