enter image description here 定义自然数完全平方数n为Sn,如果它的算术平方根等于其十进制数拆分为的各个数之和。 如:sqrt{81} = 8+1,sqrt{6724} = 6+72+4,sqrt{8281} = 8+2+81 = 82+8+1,sqrt{9801}=98+0+1 定义T(N)为n<= N的Sn之和。已知T(10^4) = 41333
求T(10^{12})

import time
def t(n,x):
 if n==int(x):return 1
 if n>int(x):return 0
 for i in range(1,len(x)):
  r= t(n-int(x[-i:]),x[:-i])
  if r==1: return r
 return 0

def T(n):
 tm=time.time()
 s=0
 for i in range(9,n+1,9):
  for j in [0,1]:
   i+=j
   z=t(i,str(i**2))*i**2
   s+=z
 print(time.time()-tm)
 return s

n=10**6
print(T(n))