Bueno...la verdad es que mi nivel de conocimientos sobre programación es bastante bajo (vamos, por los suelos :-) Fundamentalmente intento programar algoritmos matemáticos y ya sé que os parecerá un poco "bestia", pero yo intenté hacerlo a saco (y funcionó!):
num[4] = NUM%10;
num[3] = ((NUM-num[4])%100)/10;
num[2] = ((NUM-(num[3]*10)-num[4])%1000)/100;
num[1] = ((NUM-(num[2]*100)-(num[3]*10)-num[4])%10000)/1000;
num[0] = ((NUM-(num[1]*1000)-(num[2]*100)-(num[3]*10)-num[4])%100000)/10000;