Last Nonzero Digits of a Factorial in Base
Mathematica, 57 48 bytes
Saved 9 bytes thanks to @2012rcampion .
IntegerString[#!/#2^#!~IntegerExponent~#2,##2]&
Python, 198 192 181 chars
def F(n,b,k):
p=5820556928/8**b%8;z=0;e=f=x=1
while n/p**e:z+=n/p**e;e+=1
z/=1791568/4**b%4;B=b**(z+k)
while x<=n:f=f*x%B;x+=1
s='';f/=b**z
while f:s=str(f%b)+s;f/=b
return s
It's fast enough, ~23 seconds on the biggest example. And no factorial builtin (I'm looking at you, Mathematica!).
Pyth, 26 35 bytes
M?G%GHg/GHH.N>ju%g*GhHT^T+YslNN1T_Y
This is a function of 3 arguments, number, base, number of digits.
Demonstration.
The slowest test case, the final one, takes 15 seconds on my machine.