Przesłanka
Pewnej nocy zastanawiałem się nad liczbami. Dowiedziałem się czegoś wyjątkowego o liczbach 7, 10, 12, 13 i innych. Są to kwadraty kwadratów! Oznacza to, że gdy są podniesione do kwadratu, składają się z samych kwadratów. OEIS nazywa je kwadratami, które są dziesiętną konkatenacją dwóch lub więcej kwadratów.
Przykłady takich liczb obejmują 7 (49 ma 2 2 i 3 2 ) 13 (169 ma 4 2 i 3 2 ) i 20 (400 ma 2 2 i 0 2 ). Inne przykłady obejmują 37, ponieważ 1369 to termin, ponieważ można go podzielić na 1, 36 i 9. 1444 (38 2 ) to termin, ponieważ można go podzielić na 1, 4, 4, 4. Zapytałem o to na Matematyki .SE, a nazwa pochodzi ode mnie!
Wyzwanie
Zaprojektuj program, który drukuje liczby TanMath. Biorąc pod uwagę liczbę n (od 1), wydrukuj n-ty numer TanMath, T (n).
Jako przykład kodu:
>> 1
>> 7
lub
>> 4
>> 13
Odwołanie do implementacji Python (dzięki @ MartinBüttner i @ 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
Oto lista pierwszych 100 liczb:
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 180 180 190 191 200 201 204 205 209 210 212 220 223 230 240 250 253 260 270 280 285 290 300 305 306 310 315 320 325 330 340 342 343 345 348 350 360 369 370 375 379 380 390 397 400 402 405 408 410 413 420 430 440 441 450 460 470 475 480 487
To jest golf golfowy, więc wygrywa najkrótszy kod!
Powodzenia!