สมมติว่ามีโมดูลเซ็นเซอร์ที่สามารถตรวจสอบสภาพแวดล้อมใกล้เคียงได้ถึงรัศมี r มีบางสิ่งในจุดขัดแตะของวงกลมการตรวจสอบของโมดูลที่ต้องได้รับการตรวจสอบ ดังนั้น จึงวางโมดูลพลังงานต่ำจำนวน k เพื่อให้สามารถตรวจสอบเฉพาะจุดเฉพาะเหล่านั้น จากกำลังสองของรัศมีและจำนวน k ของโมดูลพลังงานต่ำ เราจะต้องค้นหาว่าสามารถตรวจสอบจุดต่างๆ ได้อย่างถูกต้องหรือไม่ เราจะคืนค่าเป็น จริง หากการตรวจสอบเป็นไปได้ มิฉะนั้น เราจะคืนค่าเป็นเท็จ
ดังนั้น หากอินพุตเหมือนกำลังสองของรัศมี (j) =4 จำนวนจุดตรวจสอบ (k) =3 เอาต์พุตจะเป็นเท็จ
ถ้า j =4 จะมี 4 จุดบนเส้นรอบวงของวงกลมการตรวจสอบ นั่นคือ:(0,2), (0,-2), (2,0) และ (-2,0) ดังนั้น หากเราแนะนำสถานีตรวจสอบใหม่ 3 สถานี เราไม่สามารถตรวจสอบจุดทั้งหมดได้อย่างเต็มที่
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- square_set :=ชุดที่มีค่ากำลังสองสูงสุด 44721
- ผม :=0
- res :=0
- ในขณะที่ฉัน <(j ^ 0.5) ทำ
- ถ้า (j - i ^ 2) มีอยู่ใน square_set แล้ว
- res :=res + 1
- ผม :=ผม + 1
- ถ้า (j - i ^ 2) มีอยู่ใน square_set แล้ว
- res :=res * 4
- ถ้า k>=res แล้ว
- คืนค่า True
- มิฉะนั้น
- คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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