Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบเราสามารถไปถึงตำแหน่ง n ได้โดยการกระโดดหรือไม่ใน Python


สมมติว่ามีเส้นจำนวนตั้งแต่ 1 ถึง n ตอนแรกเราอยู่ที่ตำแหน่ง 0 กระโดดหนึ่งก้าวเพื่อไป 1 จากนั้นกระโดดสองตำแหน่งไปถึงตำแหน่งที่ 3 จากนั้นกระโดดสามตำแหน่งเพื่อไปถึงที่ 6 เป็นต้น เราต้องเช็คก่อนว่าจะรักษาไว้ได้ถึงตำแหน่ง n หรือเปล่า

ดังนั้น หากอินพุตเป็น n =21 ผลลัพธ์จะเป็น True เพราะ 1+2+3+4+5+6 =21

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • j:=(1 + สแควร์รูทของ (1+8*n)) / 2
  • ถ้า |j - int ส่วนหนึ่งของ j| <=0 แล้ว
    • คืนค่า True
  • มิฉะนั้นจะคืนค่าเป็นเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from math import sqrt
def solve(n):
   j=(1+sqrt(1+8*n))/2
   if abs(j-int(j))<=0:
      return True
   else:
      return False

n = 21
print(solve(n))

อินพุต

21

ผลลัพธ์

True