Split as number, join as string, repeat

Pyth, 29 21 bytes

jku+j-JiGQK/J2QjKQvwz

Really straightforward implementation.

Takes input on stdin in the following format:

N
B
S

Mathematica, 101 bytes

Nest[a~Function~(b=FromDigits)[Through@((c=IntegerString)@*Ceiling<>c@*Floor)[a/2],#],#2~b~#,#3]~c~#&

Uses some Through trickery to apply both the ceiling and floor functions. Just ignore the errors.


CJam, 24 bytes

q~:B;{:~Bb_)\]2f/Bfbs}*i

Test it here. Takes input as "N" S B.

Explanation

q~                       e# Read an eval input.
  :B;                    e# Store the base in B and discard it.
     {               }*  e# Repeat S times.
      :~                 e# Turn the string N into an array of digits.
        Bb               e# Interpret as base B.
          _)\            e# Duplicate and increment. Swap order.
             ]2f/        e# Wrap them in an array and (integer-)divide both by 2.
                 Bfb     e# Convert both to base B.
                    s    e# Flatten into a single string.
                       i e# Convert to an integer to fix the N = 0 case.