(PARI) can_split(v, b=10, p=3)=if(#v==0, 1, for(k=1, #v, if(ispower(fromdigits(v[1..k], b), p) && can_split(v[k+1..#v], b, p), return(1))); return(0));
isok(n, b=10, p=3)=if(n%b==0, return(0)); my(v=digits(n^p, b)); for(k=1, #v-1, if(ispower(fromdigits(v[1..k], b), p) && can_split(v[k+1..#v], b, p), return(1))); return(0); \\
François Marques, Jul 12 2021
(Python)
from sympy import integer_nthroot
def iscube(n): return integer_nthroot(n, 3)[1]
def ok3(n, c):
if n%10 == 9 or (c == 1 and n%10 == 0): return False
if c > 1 and iscube(n): return True
d = str(n)
for i in range(1, len(d)):
if iscube(int(d[:i])) and ok3(int(d[i:]), c+1): return True
return False