defdecompose(n):ifn==0:return-1elifn==1:return[1]array_power=[pow(i,2)foriinrange(1,n)]#array with powers [1^2,2^2,3^2...,(n-1)^2]
array_power=array_power[::-1]array_help,power,i,j=[],pow(n,2),0,n-1# power= n^2, i=element(array), j= base of the power
whilepower>0:ifpower>=array_power[i]:power-=array_power[i]array_help.append(j)i+=1j-=1ifi==n-1andpower>0:return[n]returnarray_help[::-1]print(decompose(1))
Python solution:
Once try for 50 You should get[1,3,5,8,49],