ধরুন একটি সেন্সর মডিউল আছে যা r ব্যাসার্ধ পর্যন্ত তার কাছাকাছি পরিবেশ পর্যবেক্ষণ করতে পারে। মডিউলের মনিটরিং সার্কেলের ল্যাটিস পয়েন্টে কিছু জিনিস রয়েছে যা পর্যবেক্ষণ করা দরকার। সুতরাং, কম-পাওয়ার মডিউলগুলির k সংখ্যা স্থাপন করা হয়েছে যাতে তারা শুধুমাত্র সেই নির্দিষ্ট পয়েন্টগুলি নিরীক্ষণ করতে পারে। ব্যাসার্ধের বর্গ এবং কম-পাওয়ার মডিউলের k সংখ্যার পরিপ্রেক্ষিতে, আমাদের খুঁজে বের করতে হবে যে বিন্দুগুলি সঠিকভাবে পর্যবেক্ষণ করা যায় কিনা। পর্যবেক্ষণ করা সম্ভব হলে আমরা সত্য ফেরত দিই, অন্যথায়, আমরা মিথ্যা ফেরত দিই।
সুতরাং, যদি ইনপুটটি ব্যাসার্ধের বর্গক্ষেত্রের মত হয় (j) =4, পর্যবেক্ষণ পয়েন্টের সংখ্যা(k) =3, তাহলে আউটপুট হবে False
j =4 হলে, পর্যবেক্ষণ বৃত্তের পরিধিতে 4টি বিন্দু আছে; যেগুলো হল:(0,2), (0,-2), (2,0), এবং (-2,0)। সুতরাং, যদি আমরা তিনটি নতুন মনিটরিং স্টেশন প্রবর্তন করি, আমরা পয়েন্টগুলি সম্পূর্ণরূপে নিরীক্ষণ করতে পারি না৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- square_set :=44721 পর্যন্ত মানের বর্গাকার সমন্বিত একটি সেট
- i :=0
- res :=0
- যখন i <(j ^ 0.5), do
- যদি (j - i ^ 2) স্কোয়ার_সেটে উপস্থিত থাকে, তাহলে
- res :=res + 1
- i :=i + 1
- যদি (j - i ^ 2) স্কোয়ার_সেটে উপস্থিত থাকে, তাহলে
- res :=res * 4
- যদি k>=res হয়, তাহলে
- সত্য ফেরান
- অন্যথায়,
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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