1에서 n까지의 숫자 라인이 있다고 가정합니다. 처음에 우리는 위치 0에 있고, 한 단계 점프하여 1로 이동하고, 두 단계 점프하여 위치 3에 도달한 다음, 세 위치를 점프하여 위치 6에 도달하는 식입니다. 이를 유지하고 있는지 확인해야 n 위치에 도달할 수 있습니다.
따라서 입력이 n =21과 같으면 1+2+3+4+5+6 =21
이므로 출력은 True가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- j:=(1 + (1+8*n)의 제곱근) / 2
- if |j - j의 정수 부분| <=0, 그럼
- 참 반환
- 그렇지 않으면 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))
입력
21
출력
True