도전
음, 우리는 제곱 숫자 나 다른 모양의 숫자로 작동하는 많은 난제들이 있지만, 간단히 묻는 것은 없습니다.
입력으로 정수 n
(where n>=0
)가 주어지면 n
완전한 제곱이면 true 값을, 그렇지 않으면 false 값을 반환합니다.
규칙
- 표준 I / O 규칙 에서 허용하는 한 합리적이고 편리한 수단으로 입력 할 수 있습니다 .
- 선택한 언어가 기본적으로 처리 할 수있는 것보다 부동 소수점 부정확성을 초래하는 것보다 큰 입력을 처리 할 필요는 없습니다.
- 출력은 두 가지 일관된 진실 / 거짓 값 중 하나 여야합니다 (예 :
true
또는false
,1
또는0
). 입력이 완벽한 제곱이면 진실이고 그렇지 않으면 거짓입니다. - 이것은 코드 골프 이므로 바이트 수가 가장 적습니다.
테스트 사례
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
, 적어도 JavaScript에서 더블 핸들이 안전하게 처리 할 수있는 것보다 여전히 큽니다.18014398509481982 > 9007199254740991
2**54-2
JS 콘솔에 입력 하고 얻은 18014398509481982
값 (정확한 값)을 비교하십시오. JS는 정확한 값을 출력하므로 2**54-2
이중으로 표현할 수 있습니다. 그래도 확신하지 못하면 이진 데이터를 가져 와서 0100001101001111111111111111111111111111111111111111111111111111
IEEE-754 배정 밀도 부동 소수점으로 해석하고 얻는 가치를 확인하십시오.
18014398509481982
(2**54-2
있는) 입니다 이중으로 표현할 수있는, 사용이 있다는 응답 원인이sqrt
실패합니다.