Приміщення
Однієї ночі я просто роздумував над номерами. Я дізнався про щось унікальне щодо чисел, таких як 7, 10, 12, 13 та більше. Вони - квадрати квадратів! Це означає, що коли вони складаються з квадратів, вони складаються з самих квадратів. OEIS називає їх квадратами, які є десятковою конкатенацією двох або більше квадратів.
Приклади таких чисел включають 7 (49 має 2 2 і 3 2 ) 13 (169 має 4 2 і 3 2 ) і 20 (400 має 2 2 і 0 2 ). Інші приклади включають 37, оскільки 1369 - це термін, оскільки його можна розділити на 1, 36 та 9. 1444 (38 2 ) - це термін, оскільки його можна розділити як 1, 4, 4, 4. Я запитав про це на Math .SE, і його назвали на честь мене!
Виклик
Створіть програму, яка друкує номери TanMath. Враховуючи число n (починаючи з 1), надрукуйте n-й номер TanMath, T (n).
Як приклад коду:
>> 1
>> 7
або
>> 4
>> 13
Довідкова реалізація Python (спасибі @ 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 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 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
Це кодовий гольф, тому найкоротший код виграє!
Удачі!