자신이 발명 한 숫자의 제곱 수 자릿수 밀도 (SNDD)는 숫자의 길이에 대한 연속 자릿수에서 찾은 제곱 수의 비율입니다. 예를 들어, 169는 1, 9, 16, 169의 4 제곱수를 포함하는 3 자리 숫자이므로 제곱수 자릿수 밀도는 4/3 또는 1.33입니다. 4 자리 숫자 (1444)는 6 개의 제곱 (1, 4, 4, 4, 144, 1444)을 가지므로 6/4 또는 1.5의 비율이다. 앞의 예에서 사각형을 반복 할 수 있습니다. 또한 441은 숫자 1444 내에서 연속적으로 찾을 수 없으므로 허용되지 않습니다.
당신의 임무는 가장 높은 제곱 자릿수 밀도를 가진 숫자에 대해 주어진 범위 A-B (포함)를 검색하는 프로그램을 작성하는 것입니다. 프로그램은 다음 사양을 준수해야합니다.
- 입력 A, B를 1에서 1,000,000,000 (10 억) 범위로 가져갑니다. 예:
sndd 50 1000
- 결과적으로 SNDD가 가장 큰 숫자를 반환하십시오. 동점 인 경우 가장 작은 숫자를 반환하십시오.
- 0은 0, 00, 000 등의 형식으로 사각형으로 계산되지 않습니다. 0으로 시작하는 사각형 (예 : 049 또는 0049)도 마찬가지입니다.
- 전체 숫자는 제곱 숫자 일 필요는 없습니다.
예 :
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
보너스 : 1과 1,000,000,000 사이의 가장 큰 SNDD를 가진 숫자는 무엇입니까? 이것이 가장 큰지 또는 더 큰 범위에있을 수 있는지 증명할 수 있습니까?
현재 점수 :
- 루비 : 142
- Windows PowerShell : 153
- 스칼라 : 222
- 파이썬 : 245
이제 답변이 선택되었으므로 JavaScript로 된 (참조되지 않은) 참조 구현은 다음과 같습니다. http://jsfiddle.net/ywc25/2/