Ну если математика, то:
1 первый этап определить количество разрядов, поскольку в строку нельзя, то мы имеем максимум int64 и знаем его конечное число разрядов r.
Далее в цикле в обратном порядке (r->1) дели нашем число на 1*10^r и берём целую часть от деления, до тех пор пока оно равно 0), получаем rM (разрядность числа)
2. Продолжаем в цикле:
Берём число (previousResult) полученное в прыдущем цикле (или исходное) и делим его на 1*10^r берём результат целочисленного деления, умножаем на 1*10^r пишем в previousTerm и кладём в массив
Теперь берём previousResult=previousResult-previousTerm
3. r=r-1
4 Goto 2