Python 3.6 (with IO), 73 bytes
n=input();l=range(int(n));print(n in[f"{i*i}{j*j}"for i in l for j in l])
You could also use,
n=input();l=range(int(n));print({n}&{f"{i*i}{j*j}"for i in l for j in l})
But unfortunately it doesnt output booleon values rather it outputs, {n}
for True
and set()
for False
slightly longer answer (By 2 bytes)
n=int(input());print(str(n)in[f"{(k//n)**2}{(k%n)**2}"for k in range(n*n)])
and without a loop
n=int(input());m=k=0;exec('m+=f"{(k//n)**2}{(k%n)**2}"==str(n);k+=1;'*n**2);print(m>0)