전제
어느 날 밤, 나는 단지 숫자에 대해 고민하고있었습니다. 7, 10, 12, 13 등과 같은 숫자에 대해 독특한 것을 발견했습니다. 그들은 사각형의 제곱입니다! 제곱 할 때 제곱 자체로 구성됨을 의미합니다. OEIS는이를 2 개 이상의 제곱의 10 진수 연결 인 제곱이라고 부릅니다.
그러한 수의 예는 7 (49는 2 2 및 3 2 ) 13 (169는 4 2 및 3 2 ) 및 20 (400은 2 2 및 0 2 )을 포함합니다. 1369는 1, 36 및 9로 분할 될 수있는 용어이므로 37도 포함합니다. 1444 (38 2 )는 1, 4, 4, 4로 분할 될 수있는 용어입니다. .SE, 그리고 그것은 저의 이름을 따서 명명되었습니다 !
도전
TanMath 번호를 인쇄하는 프로그램을 설계하십시오. 숫자 n (1부터 시작)이 주어지면 n 번째 TanMath 숫자 T (n)를 인쇄하십시오.
코드 예제로 :
>> 1
>> 7
또는
>> 4
>> 13
파이썬 구현 참조 (@ MartinBüttner 및 @ Sp3000 덕분에) :
from math import sqrt
n = input()
def r(digits, depth):
z = len(digits)
if z < 1:
return (depth > 1)
else:
for i in range(1, z+1):
t = int(digits[:i])
if sqrt(t).is_integer() and r(digits[i:], depth+1):
return True
return False
i=0
t=0
while t < n:
i += 1
if r(str(i**2), 0):
t += 1
print i
다음은 처음 100 개의 숫자 목록입니다.
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97100102105107108110112119120121125129130138140150160170180190191200201204204209209210 21222022323024025025326027027028085853003003063063103153203253303403423424334534548350360 369370375 3793803903909740040240540841041041342043044044414504604704704747 4450
이것은 코드 골프이므로 가장 짧은 코드가 승리합니다!
행운을 빕니다!