Обожаю такие условия
Что мешает поделить 18 на 3^10 ? ( Получится примерно 0.0003048315805517451607...)
А если речь о делении нацело (без остатка), то задачу решают обратным способом
Берем n и в цикле делим на k считая количество
18/3 = 6 (1)
6/3=2 (2)
2/3=0 ( делим нацело ) -> закончили упражнение - ответ 2
n,k=(int(i) for i in input('n k =').split())
x=0
while n:
try:
n,s=divmod(n,k)
if s: break
x +=1
except:
print('Да вы чо! На нуль делите?')
break
print(x)