Эта задача почти не отличается от предыдущей, если число представить как стопку, а нули как контейнеры типа A. Очевидно, что все числа разбиваются на три класса. Остается только прописать переходы при добавлении одной цифры. Лучше (привычнее) сделать это в десятичной системе счисления, а затем заменить девятки (количество ненулевых цифр) на K – 1, а десятки на K. В результате основной цикл будет выглядеть так:
for i := 2 to N do begin OTZ := TZ; OZ := Z; ONZ := NZ; TZ := OTZ * K + Z; {TZ — два нуля} Z := ONZ; {Z — один ноль} NZ := OZ * (K - 1) + ONZ * (K - 1) {NZ — в конце не ноль} end;