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.