มีเส้นจำนวน 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