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

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

มีเส้นจำนวน 1 ถึง n เริ่มที่ 0 ก้าว 1 ไป 1 ก้าว 2 ไป 3 ก้าว 3 ไป 6 ... ตรวจสอบว่าสามารถถึง n ได้หรือไม่

เช่น n = 21 ผลลัพธ์ True เพราะ 1+2+3+4+5+6 = 21

วิธีแก้ปัญหา

  • j := (1 + sqrt(1+8*n)) / 2
  • ถ้า |j - int(j)| <= 0: คืนค่า True
  • มิฉะนั้น: คืนค่า False

ตัวอย่างโค้ด

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))

Input

21

Output

True